diff --git a/awx/ui/static/js/app.js b/awx/ui/static/js/app.js
index 03a775ce42..b45b22086f 100644
--- a/awx/ui/static/js/app.js
+++ b/awx/ui/static/js/app.js
@@ -56,7 +56,8 @@ angular.module('ansible', [
'PermissionFormDefinition',
'PermissionListDefinition',
'PermissionsHelper',
- 'JobsListDefinition',
+ 'CompletedJobsDefinition',
+ 'RunningJobsDefinition',
'JobFormDefinition',
'JobEventsListDefinition',
'JobEventDataDefinition',
diff --git a/awx/ui/static/js/controllers/Jobs.js b/awx/ui/static/js/controllers/Jobs.js
index 452651fd52..b80d1d60d7 100644
--- a/awx/ui/static/js/controllers/Jobs.js
+++ b/awx/ui/static/js/controllers/Jobs.js
@@ -10,45 +10,36 @@
'use strict';
-function JobsList($scope, $compile, ClearScope, Breadcrumbs, LoadScope, JobList) {
+function JobsList($scope, $compile, ClearScope, Breadcrumbs, LoadScope, RunningJobsList, CompletedJobsList) {
ClearScope();
- var e, completed_scope, running_scope, queued_scope, schedule_scope,
- completed_list, running_list, queued_list, schedule_list;
+ var e, completed_scope, running_scope, queued_scope, schedule_scope;
// Add breadcrumbs
e = angular.element(document.getElementById('breadcrumbs'));
- e.html(Breadcrumbs({ list: JobList, mode: 'edit' }));
+ e.html(Breadcrumbs({ list: { editTitle: 'Jobs' } , mode: 'edit' }));
$compile(e)($scope);
- completed_list = angular.copy(JobList);
- completed_list.name = "completed_jobs";
- completed_list.iterator = "completed_jobs";
- completed_list.editTitle = "Completed";
completed_scope = $scope.$new();
LoadScope({
scope: completed_scope,
- list: completed_list,
+ list: CompletedJobsList,
id: 'completed_jobs',
- url: '/api/v1/jobs'
+ url: '/static/sample/data/jobs/completed/data.json'
});
- running_list = angular.copy(JobList);
- running_list.name = "running_jobs";
- running_list.iterator = "running_job";
- running_list.editTitle = "Running";
running_scope = $scope.$new();
LoadScope({
scope: running_scope,
- list: running_list,
+ list: RunningJobsList,
id: 'running_jobs',
- url: '/api/v1/jobs'
+ url: '/static/sample/data/jobs/running/data.json'
});
}
-JobsList.$inject = ['$scope', '$compile', 'ClearScope', 'Breadcrumbs', 'LoadScope', 'JobList'];
+JobsList.$inject = ['$scope', '$compile', 'ClearScope', 'Breadcrumbs', 'LoadScope', 'RunningJobsList', 'CompletedJobsList'];
diff --git a/awx/ui/static/js/helpers/Jobs.js b/awx/ui/static/js/helpers/Jobs.js
index 9501103586..d353f4ebfd 100644
--- a/awx/ui/static/js/helpers/Jobs.js
+++ b/awx/ui/static/js/helpers/Jobs.js
@@ -165,7 +165,8 @@ angular.module('JobsHelper', ['Utilities', 'FormGenerator', 'JobSummaryDefinitio
* Called from JobsList controller to load each section or list on the page
*
*/
-.factory('LoadScope', ['SearchInit', 'PaginateInit', 'GenerateList', function(SearchInit, PaginateInit, GenerateList) {
+.factory('LoadScope', ['SearchInit', 'PaginateInit', 'GenerateList', 'PageRangeSetup', 'Wait', 'ProcessErrors', 'Rest',
+ function(SearchInit, PaginateInit, GenerateList, PageRangeSetup, Wait, ProcessErrors, Rest) {
return function(params) {
var scope = params.scope,
list = params.list,
@@ -181,7 +182,6 @@ angular.module('JobsHelper', ['Utilities', 'FormGenerator', 'JobSummaryDefinitio
showSearch: false
});
- url = '/static/sample/data/schedules/inventory/data.json';
SearchInit({
scope: scope,
set: list.name,
@@ -195,5 +195,40 @@ angular.module('JobsHelper', ['Utilities', 'FormGenerator', 'JobSummaryDefinitio
url: url,
pageSize: 10
});
+
+
+ // The following bits probably don't belong here once the API is available.
+
+ if (scope.removePostRefresh) {
+ scope.removePostRefresh();
+ }
+ scope.$on('PostRefresh', function(e, data){
+ var i, modifier;
+ PageRangeSetup({
+ scope: scope,
+ count: data.count,
+ next: data.next,
+ previous: data.previous,
+ iterator: list.iterator
+ });
+ scope[list.iterator + 'Loading'] = false;
+ for (i = 1; i <= 3; i++) {
+ modifier = (i === 1) ? '' : i;
+ scope[list.iterator + 'HoldInput' + modifier] = false;
+ }
+ scope[list.name] = data.results;
+ window.scrollTo(0, 0);
+ Wait('stop');
+ });
+
+ Rest.setUrl(url);
+ Rest.get()
+ .success(function(data) {
+ scope.$emit('PostRefresh', data);
+ })
+ .error(function(data, status) {
+ ProcessErrors(scope, data, status, null, { hdr: 'Error!',
+ msg: 'Call to ' + url + ' failed. GET returned: ' + status });
+ });
};
}]);
\ No newline at end of file
diff --git a/awx/ui/static/js/helpers/PaginationHelpers.js b/awx/ui/static/js/helpers/PaginationHelpers.js
index 0e68e72b2f..d6910f92c8 100644
--- a/awx/ui/static/js/helpers/PaginationHelpers.js
+++ b/awx/ui/static/js/helpers/PaginationHelpers.js
@@ -128,7 +128,7 @@ angular.module('PaginationHelpers', ['Utilities', 'RefreshHelper', 'RefreshRelat
} else {
scope[iterator + '_page_size'] = 20;
}
-
+
scope.getPage = function (page, set, iterator) {
var new_url = scope[iterator + '_url'].replace(/.page\=\d+/, ''),
connect = (/\/$/.test(new_url)) ? '?' : '&';
diff --git a/awx/ui/static/js/lists/CompletedJobs.js b/awx/ui/static/js/lists/CompletedJobs.js
new file mode 100644
index 0000000000..d99da84d72
--- /dev/null
+++ b/awx/ui/static/js/lists/CompletedJobs.js
@@ -0,0 +1,127 @@
+/*********************************************
+ * Copyright (c) 2014 AnsibleWorks, Inc.
+ *
+ * CompletedJobs.js
+ *
+ *
+ */
+
+'use strict';
+
+angular.module('CompletedJobsDefinition', [])
+ .value( 'CompletedJobsList', {
+
+ name: 'completed_jobs',
+ iterator: 'completed_job',
+ editTitle: 'Completed Jobs',
+ index: false,
+ hover: true,
+ well: false,
+
+ fields: {
+ id: {
+ label: 'Job ID',
+ key: true,
+ desc: true,
+ searchType: 'int'
+ },
+ inventory: {
+ label: 'Inventory ID',
+ searchType: 'int',
+ searchOnly: true
+ },
+ created: {
+ label: 'Create On',
+ link: false,
+ searchable: false,
+ filter: "date:'MM/dd HH:mm:ss'"
+ },
+ job_template: {
+ label: 'Job Template',
+ ngBind: 'completed_job.summary_fields.job_template.name',
+ //ngHref: "{{ '/#/job_templates/?name=' + completed_job.summary_fields.job_template.name }}",
+ ngHref:"{{ '/#/job_templates/' + completed_job.job_template }}",
+ sourceModel: 'job_template',
+ sourceField: 'name'
+ },
+ failed: {
+ label: 'Job failed?',
+ searchSingleValue: true,
+ searchType: 'boolean',
+ searchValue: 'true',
+ searchOnly: true,
+ nosort: true
+ },
+ status: {
+ label: 'Status',
+ "class": 'job-{{ completed_job.status }}',
+ searchType: 'select',
+ linkTo: "{{ completed_job.statusLinkTo }}",
+ searchOptions: [
+ { name: "new", value: "new" },
+ { name: "waiting", value: "waiting" },
+ { name: "pending", value: "pending" },
+ { name: "running", value: "running" },
+ { name: "successful", value: "successful" },
+ { name: "error", value: "error" },
+ { name: "failed", value: "failed" },
+ { name: "canceled", value: "canceled" }
+ ],
+ badgeIcon: 'fa icon-job-{{ completed_job.status }}',
+ badgePlacement: 'left',
+ badgeToolTip: "{{ completed_job.statusBadgeToolTip }}",
+ badgeTipPlacement: 'top',
+ badgeNgHref: "{{ completed_job.statusLinkTo }}",
+ awToolTip: "{{ completed_job.statusBadgeToolTip }}",
+ dataPlacement: 'top'
+ }
+ },
+
+ actions: {
+ refresh: {
+ mode: 'all',
+ awToolTip: "Refresh the page",
+ ngClick: "refresh()"
+ }
+ },
+
+ fieldActions: {
+ submit: {
+ label: 'Relaunch',
+ icon: 'icon-rocket',
+ mode: 'all',
+ ngClick: 'submitJob(completed_job.id, completed_job.summary_fields.job_template.name)',
+ awToolTip: 'Start the job',
+ dataPlacement: 'top'
+ },
+ cancel: {
+ label: 'Stop',
+ mode: 'all',
+ ngClick: 'deleteJob(completed_job.id)',
+ awToolTip: 'Cancel a running or pending job',
+ ngShow: "completed_job.status == 'pending' || completed_job.status == 'running' || completed_job.status == 'waiting'",
+ dataPlacement: 'top'
+ },
+ "delete": {
+ label: 'Delete',
+ mode: 'all',
+ ngClick: 'deleteJob(completed_job.id)',
+ awToolTip: 'Delete the job',
+ ngShow: "completed_job.status != 'pending' && completed_job.status != 'running' && completed_job.status != 'waiting'",
+ dataPlacement: 'top'
+ },
+ dropdown: {
+ type: 'DropDown',
+ label: 'View',
+ icon: 'fa-search-plus',
+ 'class': 'btn-default btn-xs',
+ options: [
+ { ngClick: 'editJob(completed_job.id, completed_job.summary_fields.job_template.name)', label: 'Status' },
+ { ngClick: 'viewEvents(completed_job.id, completed_job.summary_fields.job_template.name)', label: 'Events',
+ ngHide: "completed_job.status == 'new'" },
+ { ngClick: 'viewSummary(completed_job.id, completed_job.summary_fields.job_template.name)', label: 'Host Summary',
+ ngHide: "completed_job.status == 'new'" }
+ ]
+ }
+ }
+ });
diff --git a/awx/ui/static/js/lists/Jobs.js b/awx/ui/static/js/lists/Jobs.js
index c246501505..10fa69c0a7 100644
--- a/awx/ui/static/js/lists/Jobs.js
+++ b/awx/ui/static/js/lists/Jobs.js
@@ -15,7 +15,7 @@ angular.module('JobsListDefinition', [])
name: 'jobs',
iterator: 'job',
editTitle: 'Jobs',
- showTitle: true,
+ showTitle: false,
index: false,
hover: true,
well: false,
@@ -36,7 +36,8 @@ angular.module('JobsListDefinition', [])
created: {
label: 'Create On',
link: false,
- searchable: false
+ searchable: false,
+ filter: "date:'MM/dd HH:mm:ss'"
},
job_template: {
label: 'Job Template',
diff --git a/awx/ui/static/js/lists/RunningJobs.js b/awx/ui/static/js/lists/RunningJobs.js
new file mode 100644
index 0000000000..729297fe2b
--- /dev/null
+++ b/awx/ui/static/js/lists/RunningJobs.js
@@ -0,0 +1,127 @@
+/*********************************************
+ * Copyright (c) 2014 AnsibleWorks, Inc.
+ *
+ * RunningJobs.js
+ *
+ *
+ */
+
+'use strict';
+
+angular.module('RunningJobsDefinition', [])
+ .value( 'RunningJobsList', {
+
+ name: 'running_jobs',
+ iterator: 'running_job',
+ editTitle: 'Completed Jobs',
+ index: false,
+ hover: true,
+ well: false,
+
+ fields: {
+ id: {
+ label: 'Job ID',
+ key: true,
+ desc: true,
+ searchType: 'int'
+ },
+ inventory: {
+ label: 'Inventory ID',
+ searchType: 'int',
+ searchOnly: true
+ },
+ created: {
+ label: 'Create On',
+ link: false,
+ searchable: false,
+ filter: "date:'MM/dd HH:mm:ss'"
+ },
+ job_template: {
+ label: 'Job Template',
+ ngBind: 'running_job.summary_fields.job_template.name',
+ //ngHref: "{{ '/#/job_templates/?name=' + running_job.summary_fields.job_template.name }}",
+ ngHref:"{{ '/#/job_templates/' + running_job.job_template }}",
+ sourceModel: 'job_template',
+ sourceField: 'name'
+ },
+ failed: {
+ label: 'Job failed?',
+ searchSingleValue: true,
+ searchType: 'boolean',
+ searchValue: 'true',
+ searchOnly: true,
+ nosort: true
+ },
+ status: {
+ label: 'Status',
+ "class": 'job-{{ running_job.status }}',
+ searchType: 'select',
+ linkTo: "{{ running_job.statusLinkTo }}",
+ searchOptions: [
+ { name: "new", value: "new" },
+ { name: "waiting", value: "waiting" },
+ { name: "pending", value: "pending" },
+ { name: "running", value: "running" },
+ { name: "successful", value: "successful" },
+ { name: "error", value: "error" },
+ { name: "failed", value: "failed" },
+ { name: "canceled", value: "canceled" }
+ ],
+ badgeIcon: 'fa icon-job-{{ running_job.status }}',
+ badgePlacement: 'left',
+ badgeToolTip: "{{ running_job.statusBadgeToolTip }}",
+ badgeTipPlacement: 'top',
+ badgeNgHref: "{{ running_job.statusLinkTo }}",
+ awToolTip: "{{ running_job.statusBadgeToolTip }}",
+ dataPlacement: 'top'
+ }
+ },
+
+ actions: {
+ refresh: {
+ mode: 'all',
+ awToolTip: "Refresh the page",
+ ngClick: "refresh()"
+ }
+ },
+
+ fieldActions: {
+ submit: {
+ label: 'Relaunch',
+ icon: 'icon-rocket',
+ mode: 'all',
+ ngClick: 'submitJob(running_job.id, running_job.summary_fields.job_template.name)',
+ awToolTip: 'Start the job',
+ dataPlacement: 'top'
+ },
+ cancel: {
+ label: 'Stop',
+ mode: 'all',
+ ngClick: 'deleteJob(running_job.id)',
+ awToolTip: 'Cancel a running or pending job',
+ ngShow: "running_job.status == 'pending' || running_job.status == 'running' || running_job.status == 'waiting'",
+ dataPlacement: 'top'
+ },
+ "delete": {
+ label: 'Delete',
+ mode: 'all',
+ ngClick: 'deleteJob(running_job.id)',
+ awToolTip: 'Delete the job',
+ ngShow: "running_job.status != 'pending' && running_job.status != 'running' && running_job.status != 'waiting'",
+ dataPlacement: 'top'
+ },
+ dropdown: {
+ type: 'DropDown',
+ label: 'View',
+ icon: 'fa-search-plus',
+ 'class': 'btn-default btn-xs',
+ options: [
+ { ngClick: 'editJob(running_job.id, running_job.summary_fields.job_template.name)', label: 'Status' },
+ { ngClick: 'viewEvents(running_job.id, running_job.summary_fields.job_template.name)', label: 'Events',
+ ngHide: "running_job.status == 'new'" },
+ { ngClick: 'viewSummary(running_job.id, running_job.summary_fields.job_template.name)', label: 'Host Summary',
+ ngHide: "running_job.status == 'new'" }
+ ]
+ }
+ }
+ });
diff --git a/awx/ui/static/less/ansible-ui.less b/awx/ui/static/less/ansible-ui.less
index 6253163c2c..3fbf4f67e6 100644
--- a/awx/ui/static/less/ansible-ui.less
+++ b/awx/ui/static/less/ansible-ui.less
@@ -998,13 +998,20 @@ input[type="checkbox"].checkbox-no-label {
}
.job_list {
- padding-left: 15px;
padding-right: 15px;
margin-top: 30px;
-
- .form-title {
+ .row {
+ margin-left: 0;
+ margin-right: 0;
+ }
+ .page-row div:first-child {
padding-left: 8px;
}
+ .title {
+ padding-left: 8px;
+ font-weight: bold;
+ }
+
}
diff --git a/awx/ui/static/lib/ansible/generator-helpers.js b/awx/ui/static/lib/ansible/generator-helpers.js
index 1690973cbe..ccc709e6ce 100644
--- a/awx/ui/static/lib/ansible/generator-helpers.js
+++ b/awx/ui/static/lib/ansible/generator-helpers.js
@@ -535,9 +535,15 @@ angular.module('GeneratorHelpers', ['GeneratorHelpers'])
// Add data binds
if (!field.ngBindHtml && (field.showValue === undefined || field.showValue === true)) {
if (field.ngBind) {
- html += "{{ " + field.ngBind + " }}";
+ html += "{{ " + field.ngBind;
} else {
- html += "{{" + list.iterator + "." + fld + "}}";
+ html += "{{" + list.iterator + "." + fld;
+ }
+ if (field.filter) {
+ html += " | " + field.filter + " }}";
+ }
+ else {
+ html += " }}";
}
}
@@ -731,7 +737,8 @@ angular.module('GeneratorHelpers', ['GeneratorHelpers'])
html += "\n";
html += "
\n";
html += "
\n";
- html += "Page {{ " + iterator + "_page }} of {{ " + iterator + "_num_pages }} for {{ " + iterator + "_total_rows | number:0 }} " + set + '.';
+ html += "Page {{ " + iterator + "_page }} of {{ " + iterator + "_num_pages }} for {{ " + iterator + "_total_rows | number:0 }} " +
+ set.replace(/\_/g,' ') + '.';
html += "
\n";
html += "
\n";
html += "\n";
diff --git a/awx/ui/static/lib/ansible/list-generator.js b/awx/ui/static/lib/ansible/list-generator.js
index 17efee59ef..c61cc7644d 100644
--- a/awx/ui/static/lib/ansible/list-generator.js
+++ b/awx/ui/static/lib/ansible/list-generator.js
@@ -166,7 +166,7 @@ angular.module('ListGenerator', ['GeneratorHelpers'])
html += "\n";
- if (options.showSearch === undefined || options.showSearch === true) {
+ if (options.showSearch=== undefined || options.showSearch === true) {
if (list.name !== 'groups') {
if (options.searchSize) {
html += SearchWidget({
@@ -270,7 +270,7 @@ angular.module('ListGenerator', ['GeneratorHelpers'])
html += (options.mode === 'edit' || options.mode === 'summary') ? list.editTitle : list.addTitle;
html += "
\n";
}
-
+
// table header row
html += "
diff --git a/awx/ui/static/sample/data/jobs/completed/data.json b/awx/ui/static/sample/data/jobs/completed/data.json
index e7ed330f34..b8b7696029 100644
--- a/awx/ui/static/sample/data/jobs/completed/data.json
+++ b/awx/ui/static/sample/data/jobs/completed/data.json
@@ -1,6 +1,6 @@
{
- "count": 2,
- "next": null,
+ "count": 15,
+ "next": "/blah/blah/blah",
"previous": null,
"results": [
{
@@ -226,6 +226,902 @@
"MAIL": "/var/spool/mail/vagrant",
"LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
}
+ },
+ {
+ "id": 3,
+ "url": "/api/v1/jobs/2/",
+ "related": {
+ "job_host_summaries": "/api/v1/jobs/2/job_host_summaries/",
+ "activity_stream": "/api/v1/jobs/2/activity_stream/",
+ "job_events": "/api/v1/jobs/2/job_events/",
+ "job_template": "/api/v1/job_templates/3/",
+ "inventory": "/api/v1/inventories/4/",
+ "project": "/api/v1/projects/1/",
+ "credential": "/api/v1/credentials/8/",
+ "start": "/api/v1/jobs/2/start/",
+ "cancel": "/api/v1/jobs/2/cancel/"
+ },
+ "summary_fields": {
+ "credential": {
+ "name": "ssh",
+ "description": "machine creds",
+ "kind": "ssh",
+ "cloud": false
+ },
+ "job_template": {
+ "name": "Hello World",
+ "description": ""
+ },
+ "project": {
+ "name": "Examples",
+ "description": "Ansible example project",
+ "status": "successful"
+ },
+ "inventory": {
+ "name": "Rackspace",
+ "description": "",
+ "has_active_failures": true,
+ "total_hosts": 20,
+ "hosts_with_active_failures": 20,
+ "total_groups": 3,
+ "groups_with_active_failures": 3,
+ "has_inventory_sources": true,
+ "total_inventory_sources": 1,
+ "inventory_sources_with_failures": 1
+ }
+ },
+ "created": "2014-03-07T23:28:06.999Z",
+ "modified": "2014-03-07T23:28:16.424Z",
+ "job_template": 3,
+ "job_type": "playbook_run",
+ "inventory": 4,
+ "project": 1,
+ "playbook": "lamp_simple/site.yml",
+ "credential": 8,
+ "cloud_credential": null,
+ "forks": 0,
+ "limit": "",
+ "verbosity": 0,
+ "extra_vars": "{\n\t\"variable1\": \"some value\",\n\t\"variable2\": \"another value\"\n}",
+ "job_tags": "",
+ "launch_type": "manual",
+ "status": "failed",
+ "failed": true,
+ "result_traceback": "",
+ "passwords_needed_to_start": [],
+ "job_args": "[\"ssh-agent\", \"sh\", \"-c\", \"ssh-add /tmp/tmpoeaDyc && ansible-playbook -i /vagrant/ansible-commander/awx/plugins/inventory/awxrest.py -u vagrant -e '{\\\"variable1\\\": \\\"some value\\\", \\\"variable2\\\": \\\"another value\\\"}' lamp_simple/site.yml\"]",
+ "job_cwd": "/vagrant/ansible-commander/awx/projects/_1__examples",
+ "job_env": {
+ "CELERY_LOG_REDIRECT_LEVEL": "WARNING",
+ "ANSIBLE_PARAMIKO_RECORD_HOST_KEYS": "False",
+ "DJANGO_LIVE_TEST_SERVER_ADDRESS": "localhost:9013-9199",
+ "LESSOPEN": "|/usr/bin/lesspipe.sh %s",
+ "_MP_FORK_LOGFILE_": "",
+ "SSH_CLIENT": "10.0.2.2 61378 22",
+ "CVS_RSH": "ssh",
+ "LOGNAME": "vagrant",
+ "USER": "vagrant",
+ "HOME": "/home/vagrant",
+ "PATH": "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin",
+ "REST_API_TOKEN": "**********************************",
+ "CALLBACK_CONSUMER_PORT": "tcp://127.0.0.1:5557",
+ "ANSIBLE_CALLBACK_PLUGINS": "/vagrant/ansible-commander/awx/plugins/callback",
+ "LANG": "en_US.UTF-8",
+ "HISTCONTROL": "ignoredups",
+ "TERM": "xterm",
+ "SHELL": "/bin/bash",
+ "TZ": "America/New_York",
+ "_MP_FORK_LOGFORMAT_": "[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
+ "SHLVL": "1",
+ "G_BROKEN_FILENAMES": "1",
+ "HISTSIZE": "1000",
+ "CELERY_LOG_FILE": "",
+ "DJANGO_PROJECT_DIR": "/vagrant/ansible-commander",
+ "ANSIBLE_HOST_KEY_CHECKING": "False",
+ "JOB_ID": "2",
+ "PYTHONPATH": "/vagrant/ansible-commander/awx/lib/site-packages:",
+ "CELERY_LOADER": "djcelery.loaders.DjangoLoader",
+ "_MP_FORK_LOGLEVEL_": "10",
+ "ANSIBLE_NOCOLOR": "1",
+ "JOB_CALLBACK_DEBUG": "1",
+ "REST_API_URL": "http://127.0.0.1:8013",
+ "_": "/usr/bin/nohup",
+ "SSH_CONNECTION": "10.0.2.2 61378 10.0.2.15 22",
+ "INVENTORY_HOSTVARS": "True",
+ "SSH_TTY": "/dev/pts/0",
+ "CELERY_LOG_LEVEL": "10",
+ "HOSTNAME": "vagrant-centos64.vagrantup.com",
+ "INVENTORY_ID": "4",
+ "PWD": "/home/vagrant",
+ "CELERY_LOG_REDIRECT": "1",
+ "DJANGO_SETTINGS_MODULE": "awx.settings.development",
+ "MAIL": "/var/spool/mail/vagrant",
+ "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
+ }
+ },
+ {
+ "id": 4,
+ "url": "/api/v1/jobs/2/",
+ "related": {
+ "job_host_summaries": "/api/v1/jobs/2/job_host_summaries/",
+ "activity_stream": "/api/v1/jobs/2/activity_stream/",
+ "job_events": "/api/v1/jobs/2/job_events/",
+ "job_template": "/api/v1/job_templates/3/",
+ "inventory": "/api/v1/inventories/4/",
+ "project": "/api/v1/projects/1/",
+ "credential": "/api/v1/credentials/8/",
+ "start": "/api/v1/jobs/2/start/",
+ "cancel": "/api/v1/jobs/2/cancel/"
+ },
+ "summary_fields": {
+ "credential": {
+ "name": "ssh",
+ "description": "machine creds",
+ "kind": "ssh",
+ "cloud": false
+ },
+ "job_template": {
+ "name": "Hello World",
+ "description": ""
+ },
+ "project": {
+ "name": "Examples",
+ "description": "Ansible example project",
+ "status": "successful"
+ },
+ "inventory": {
+ "name": "Rackspace",
+ "description": "",
+ "has_active_failures": true,
+ "total_hosts": 20,
+ "hosts_with_active_failures": 20,
+ "total_groups": 3,
+ "groups_with_active_failures": 3,
+ "has_inventory_sources": true,
+ "total_inventory_sources": 1,
+ "inventory_sources_with_failures": 1
+ }
+ },
+ "created": "2014-03-07T23:28:06.999Z",
+ "modified": "2014-03-07T23:28:16.424Z",
+ "job_template": 3,
+ "job_type": "playbook_run",
+ "inventory": 4,
+ "project": 1,
+ "playbook": "lamp_simple/site.yml",
+ "credential": 8,
+ "cloud_credential": null,
+ "forks": 0,
+ "limit": "",
+ "verbosity": 0,
+ "extra_vars": "{\n\t\"variable1\": \"some value\",\n\t\"variable2\": \"another value\"\n}",
+ "job_tags": "",
+ "launch_type": "manual",
+ "status": "failed",
+ "failed": true,
+ "result_traceback": "",
+ "passwords_needed_to_start": [],
+ "job_args": "[\"ssh-agent\", \"sh\", \"-c\", \"ssh-add /tmp/tmpoeaDyc && ansible-playbook -i /vagrant/ansible-commander/awx/plugins/inventory/awxrest.py -u vagrant -e '{\\\"variable1\\\": \\\"some value\\\", \\\"variable2\\\": \\\"another value\\\"}' lamp_simple/site.yml\"]",
+ "job_cwd": "/vagrant/ansible-commander/awx/projects/_1__examples",
+ "job_env": {
+ "CELERY_LOG_REDIRECT_LEVEL": "WARNING",
+ "ANSIBLE_PARAMIKO_RECORD_HOST_KEYS": "False",
+ "DJANGO_LIVE_TEST_SERVER_ADDRESS": "localhost:9013-9199",
+ "LESSOPEN": "|/usr/bin/lesspipe.sh %s",
+ "_MP_FORK_LOGFILE_": "",
+ "SSH_CLIENT": "10.0.2.2 61378 22",
+ "CVS_RSH": "ssh",
+ "LOGNAME": "vagrant",
+ "USER": "vagrant",
+ "HOME": "/home/vagrant",
+ "PATH": "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin",
+ "REST_API_TOKEN": "**********************************",
+ "CALLBACK_CONSUMER_PORT": "tcp://127.0.0.1:5557",
+ "ANSIBLE_CALLBACK_PLUGINS": "/vagrant/ansible-commander/awx/plugins/callback",
+ "LANG": "en_US.UTF-8",
+ "HISTCONTROL": "ignoredups",
+ "TERM": "xterm",
+ "SHELL": "/bin/bash",
+ "TZ": "America/New_York",
+ "_MP_FORK_LOGFORMAT_": "[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
+ "SHLVL": "1",
+ "G_BROKEN_FILENAMES": "1",
+ "HISTSIZE": "1000",
+ "CELERY_LOG_FILE": "",
+ "DJANGO_PROJECT_DIR": "/vagrant/ansible-commander",
+ "ANSIBLE_HOST_KEY_CHECKING": "False",
+ "JOB_ID": "2",
+ "PYTHONPATH": "/vagrant/ansible-commander/awx/lib/site-packages:",
+ "CELERY_LOADER": "djcelery.loaders.DjangoLoader",
+ "_MP_FORK_LOGLEVEL_": "10",
+ "ANSIBLE_NOCOLOR": "1",
+ "JOB_CALLBACK_DEBUG": "1",
+ "REST_API_URL": "http://127.0.0.1:8013",
+ "_": "/usr/bin/nohup",
+ "SSH_CONNECTION": "10.0.2.2 61378 10.0.2.15 22",
+ "INVENTORY_HOSTVARS": "True",
+ "SSH_TTY": "/dev/pts/0",
+ "CELERY_LOG_LEVEL": "10",
+ "HOSTNAME": "vagrant-centos64.vagrantup.com",
+ "INVENTORY_ID": "4",
+ "PWD": "/home/vagrant",
+ "CELERY_LOG_REDIRECT": "1",
+ "DJANGO_SETTINGS_MODULE": "awx.settings.development",
+ "MAIL": "/var/spool/mail/vagrant",
+ "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
+ }
+ },
+ {
+ "id": 5,
+ "url": "/api/v1/jobs/2/",
+ "related": {
+ "job_host_summaries": "/api/v1/jobs/2/job_host_summaries/",
+ "activity_stream": "/api/v1/jobs/2/activity_stream/",
+ "job_events": "/api/v1/jobs/2/job_events/",
+ "job_template": "/api/v1/job_templates/3/",
+ "inventory": "/api/v1/inventories/4/",
+ "project": "/api/v1/projects/1/",
+ "credential": "/api/v1/credentials/8/",
+ "start": "/api/v1/jobs/2/start/",
+ "cancel": "/api/v1/jobs/2/cancel/"
+ },
+ "summary_fields": {
+ "credential": {
+ "name": "ssh",
+ "description": "machine creds",
+ "kind": "ssh",
+ "cloud": false
+ },
+ "job_template": {
+ "name": "Hello World",
+ "description": ""
+ },
+ "project": {
+ "name": "Examples",
+ "description": "Ansible example project",
+ "status": "successful"
+ },
+ "inventory": {
+ "name": "Rackspace",
+ "description": "",
+ "has_active_failures": true,
+ "total_hosts": 20,
+ "hosts_with_active_failures": 20,
+ "total_groups": 3,
+ "groups_with_active_failures": 3,
+ "has_inventory_sources": true,
+ "total_inventory_sources": 1,
+ "inventory_sources_with_failures": 1
+ }
+ },
+ "created": "2014-03-07T23:28:06.999Z",
+ "modified": "2014-03-07T23:28:16.424Z",
+ "job_template": 3,
+ "job_type": "playbook_run",
+ "inventory": 4,
+ "project": 1,
+ "playbook": "lamp_simple/site.yml",
+ "credential": 8,
+ "cloud_credential": null,
+ "forks": 0,
+ "limit": "",
+ "verbosity": 0,
+ "extra_vars": "{\n\t\"variable1\": \"some value\",\n\t\"variable2\": \"another value\"\n}",
+ "job_tags": "",
+ "launch_type": "manual",
+ "status": "failed",
+ "failed": true,
+ "result_traceback": "",
+ "passwords_needed_to_start": [],
+ "job_args": "[\"ssh-agent\", \"sh\", \"-c\", \"ssh-add /tmp/tmpoeaDyc && ansible-playbook -i /vagrant/ansible-commander/awx/plugins/inventory/awxrest.py -u vagrant -e '{\\\"variable1\\\": \\\"some value\\\", \\\"variable2\\\": \\\"another value\\\"}' lamp_simple/site.yml\"]",
+ "job_cwd": "/vagrant/ansible-commander/awx/projects/_1__examples",
+ "job_env": {
+ "CELERY_LOG_REDIRECT_LEVEL": "WARNING",
+ "ANSIBLE_PARAMIKO_RECORD_HOST_KEYS": "False",
+ "DJANGO_LIVE_TEST_SERVER_ADDRESS": "localhost:9013-9199",
+ "LESSOPEN": "|/usr/bin/lesspipe.sh %s",
+ "_MP_FORK_LOGFILE_": "",
+ "SSH_CLIENT": "10.0.2.2 61378 22",
+ "CVS_RSH": "ssh",
+ "LOGNAME": "vagrant",
+ "USER": "vagrant",
+ "HOME": "/home/vagrant",
+ "PATH": "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin",
+ "REST_API_TOKEN": "**********************************",
+ "CALLBACK_CONSUMER_PORT": "tcp://127.0.0.1:5557",
+ "ANSIBLE_CALLBACK_PLUGINS": "/vagrant/ansible-commander/awx/plugins/callback",
+ "LANG": "en_US.UTF-8",
+ "HISTCONTROL": "ignoredups",
+ "TERM": "xterm",
+ "SHELL": "/bin/bash",
+ "TZ": "America/New_York",
+ "_MP_FORK_LOGFORMAT_": "[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
+ "SHLVL": "1",
+ "G_BROKEN_FILENAMES": "1",
+ "HISTSIZE": "1000",
+ "CELERY_LOG_FILE": "",
+ "DJANGO_PROJECT_DIR": "/vagrant/ansible-commander",
+ "ANSIBLE_HOST_KEY_CHECKING": "False",
+ "JOB_ID": "2",
+ "PYTHONPATH": "/vagrant/ansible-commander/awx/lib/site-packages:",
+ "CELERY_LOADER": "djcelery.loaders.DjangoLoader",
+ "_MP_FORK_LOGLEVEL_": "10",
+ "ANSIBLE_NOCOLOR": "1",
+ "JOB_CALLBACK_DEBUG": "1",
+ "REST_API_URL": "http://127.0.0.1:8013",
+ "_": "/usr/bin/nohup",
+ "SSH_CONNECTION": "10.0.2.2 61378 10.0.2.15 22",
+ "INVENTORY_HOSTVARS": "True",
+ "SSH_TTY": "/dev/pts/0",
+ "CELERY_LOG_LEVEL": "10",
+ "HOSTNAME": "vagrant-centos64.vagrantup.com",
+ "INVENTORY_ID": "4",
+ "PWD": "/home/vagrant",
+ "CELERY_LOG_REDIRECT": "1",
+ "DJANGO_SETTINGS_MODULE": "awx.settings.development",
+ "MAIL": "/var/spool/mail/vagrant",
+ "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
+ }
+ },
+ {
+ "id": 6,
+ "url": "/api/v1/jobs/2/",
+ "related": {
+ "job_host_summaries": "/api/v1/jobs/2/job_host_summaries/",
+ "activity_stream": "/api/v1/jobs/2/activity_stream/",
+ "job_events": "/api/v1/jobs/2/job_events/",
+ "job_template": "/api/v1/job_templates/3/",
+ "inventory": "/api/v1/inventories/4/",
+ "project": "/api/v1/projects/1/",
+ "credential": "/api/v1/credentials/8/",
+ "start": "/api/v1/jobs/2/start/",
+ "cancel": "/api/v1/jobs/2/cancel/"
+ },
+ "summary_fields": {
+ "credential": {
+ "name": "ssh",
+ "description": "machine creds",
+ "kind": "ssh",
+ "cloud": false
+ },
+ "job_template": {
+ "name": "Hello World",
+ "description": ""
+ },
+ "project": {
+ "name": "Examples",
+ "description": "Ansible example project",
+ "status": "successful"
+ },
+ "inventory": {
+ "name": "Rackspace",
+ "description": "",
+ "has_active_failures": true,
+ "total_hosts": 20,
+ "hosts_with_active_failures": 20,
+ "total_groups": 3,
+ "groups_with_active_failures": 3,
+ "has_inventory_sources": true,
+ "total_inventory_sources": 1,
+ "inventory_sources_with_failures": 1
+ }
+ },
+ "created": "2014-03-07T23:28:06.999Z",
+ "modified": "2014-03-07T23:28:16.424Z",
+ "job_template": 3,
+ "job_type": "playbook_run",
+ "inventory": 4,
+ "project": 1,
+ "playbook": "lamp_simple/site.yml",
+ "credential": 8,
+ "cloud_credential": null,
+ "forks": 0,
+ "limit": "",
+ "verbosity": 0,
+ "extra_vars": "{\n\t\"variable1\": \"some value\",\n\t\"variable2\": \"another value\"\n}",
+ "job_tags": "",
+ "launch_type": "manual",
+ "status": "failed",
+ "failed": true,
+ "result_traceback": "",
+ "passwords_needed_to_start": [],
+ "job_args": "[\"ssh-agent\", \"sh\", \"-c\", \"ssh-add /tmp/tmpoeaDyc && ansible-playbook -i /vagrant/ansible-commander/awx/plugins/inventory/awxrest.py -u vagrant -e '{\\\"variable1\\\": \\\"some value\\\", \\\"variable2\\\": \\\"another value\\\"}' lamp_simple/site.yml\"]",
+ "job_cwd": "/vagrant/ansible-commander/awx/projects/_1__examples",
+ "job_env": {
+ "CELERY_LOG_REDIRECT_LEVEL": "WARNING",
+ "ANSIBLE_PARAMIKO_RECORD_HOST_KEYS": "False",
+ "DJANGO_LIVE_TEST_SERVER_ADDRESS": "localhost:9013-9199",
+ "LESSOPEN": "|/usr/bin/lesspipe.sh %s",
+ "_MP_FORK_LOGFILE_": "",
+ "SSH_CLIENT": "10.0.2.2 61378 22",
+ "CVS_RSH": "ssh",
+ "LOGNAME": "vagrant",
+ "USER": "vagrant",
+ "HOME": "/home/vagrant",
+ "PATH": "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin",
+ "REST_API_TOKEN": "**********************************",
+ "CALLBACK_CONSUMER_PORT": "tcp://127.0.0.1:5557",
+ "ANSIBLE_CALLBACK_PLUGINS": "/vagrant/ansible-commander/awx/plugins/callback",
+ "LANG": "en_US.UTF-8",
+ "HISTCONTROL": "ignoredups",
+ "TERM": "xterm",
+ "SHELL": "/bin/bash",
+ "TZ": "America/New_York",
+ "_MP_FORK_LOGFORMAT_": "[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
+ "SHLVL": "1",
+ "G_BROKEN_FILENAMES": "1",
+ "HISTSIZE": "1000",
+ "CELERY_LOG_FILE": "",
+ "DJANGO_PROJECT_DIR": "/vagrant/ansible-commander",
+ "ANSIBLE_HOST_KEY_CHECKING": "False",
+ "JOB_ID": "2",
+ "PYTHONPATH": "/vagrant/ansible-commander/awx/lib/site-packages:",
+ "CELERY_LOADER": "djcelery.loaders.DjangoLoader",
+ "_MP_FORK_LOGLEVEL_": "10",
+ "ANSIBLE_NOCOLOR": "1",
+ "JOB_CALLBACK_DEBUG": "1",
+ "REST_API_URL": "http://127.0.0.1:8013",
+ "_": "/usr/bin/nohup",
+ "SSH_CONNECTION": "10.0.2.2 61378 10.0.2.15 22",
+ "INVENTORY_HOSTVARS": "True",
+ "SSH_TTY": "/dev/pts/0",
+ "CELERY_LOG_LEVEL": "10",
+ "HOSTNAME": "vagrant-centos64.vagrantup.com",
+ "INVENTORY_ID": "4",
+ "PWD": "/home/vagrant",
+ "CELERY_LOG_REDIRECT": "1",
+ "DJANGO_SETTINGS_MODULE": "awx.settings.development",
+ "MAIL": "/var/spool/mail/vagrant",
+ "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
+ }
+ },
+ {
+ "id": 7,
+ "url": "/api/v1/jobs/2/",
+ "related": {
+ "job_host_summaries": "/api/v1/jobs/2/job_host_summaries/",
+ "activity_stream": "/api/v1/jobs/2/activity_stream/",
+ "job_events": "/api/v1/jobs/2/job_events/",
+ "job_template": "/api/v1/job_templates/3/",
+ "inventory": "/api/v1/inventories/4/",
+ "project": "/api/v1/projects/1/",
+ "credential": "/api/v1/credentials/8/",
+ "start": "/api/v1/jobs/2/start/",
+ "cancel": "/api/v1/jobs/2/cancel/"
+ },
+ "summary_fields": {
+ "credential": {
+ "name": "ssh",
+ "description": "machine creds",
+ "kind": "ssh",
+ "cloud": false
+ },
+ "job_template": {
+ "name": "Hello World",
+ "description": ""
+ },
+ "project": {
+ "name": "Examples",
+ "description": "Ansible example project",
+ "status": "successful"
+ },
+ "inventory": {
+ "name": "Rackspace",
+ "description": "",
+ "has_active_failures": true,
+ "total_hosts": 20,
+ "hosts_with_active_failures": 20,
+ "total_groups": 3,
+ "groups_with_active_failures": 3,
+ "has_inventory_sources": true,
+ "total_inventory_sources": 1,
+ "inventory_sources_with_failures": 1
+ }
+ },
+ "created": "2014-03-07T23:28:06.999Z",
+ "modified": "2014-03-07T23:28:16.424Z",
+ "job_template": 3,
+ "job_type": "playbook_run",
+ "inventory": 4,
+ "project": 1,
+ "playbook": "lamp_simple/site.yml",
+ "credential": 8,
+ "cloud_credential": null,
+ "forks": 0,
+ "limit": "",
+ "verbosity": 0,
+ "extra_vars": "{\n\t\"variable1\": \"some value\",\n\t\"variable2\": \"another value\"\n}",
+ "job_tags": "",
+ "launch_type": "manual",
+ "status": "failed",
+ "failed": true,
+ "result_traceback": "",
+ "passwords_needed_to_start": [],
+ "job_args": "[\"ssh-agent\", \"sh\", \"-c\", \"ssh-add /tmp/tmpoeaDyc && ansible-playbook -i /vagrant/ansible-commander/awx/plugins/inventory/awxrest.py -u vagrant -e '{\\\"variable1\\\": \\\"some value\\\", \\\"variable2\\\": \\\"another value\\\"}' lamp_simple/site.yml\"]",
+ "job_cwd": "/vagrant/ansible-commander/awx/projects/_1__examples",
+ "job_env": {
+ "CELERY_LOG_REDIRECT_LEVEL": "WARNING",
+ "ANSIBLE_PARAMIKO_RECORD_HOST_KEYS": "False",
+ "DJANGO_LIVE_TEST_SERVER_ADDRESS": "localhost:9013-9199",
+ "LESSOPEN": "|/usr/bin/lesspipe.sh %s",
+ "_MP_FORK_LOGFILE_": "",
+ "SSH_CLIENT": "10.0.2.2 61378 22",
+ "CVS_RSH": "ssh",
+ "LOGNAME": "vagrant",
+ "USER": "vagrant",
+ "HOME": "/home/vagrant",
+ "PATH": "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin",
+ "REST_API_TOKEN": "**********************************",
+ "CALLBACK_CONSUMER_PORT": "tcp://127.0.0.1:5557",
+ "ANSIBLE_CALLBACK_PLUGINS": "/vagrant/ansible-commander/awx/plugins/callback",
+ "LANG": "en_US.UTF-8",
+ "HISTCONTROL": "ignoredups",
+ "TERM": "xterm",
+ "SHELL": "/bin/bash",
+ "TZ": "America/New_York",
+ "_MP_FORK_LOGFORMAT_": "[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
+ "SHLVL": "1",
+ "G_BROKEN_FILENAMES": "1",
+ "HISTSIZE": "1000",
+ "CELERY_LOG_FILE": "",
+ "DJANGO_PROJECT_DIR": "/vagrant/ansible-commander",
+ "ANSIBLE_HOST_KEY_CHECKING": "False",
+ "JOB_ID": "2",
+ "PYTHONPATH": "/vagrant/ansible-commander/awx/lib/site-packages:",
+ "CELERY_LOADER": "djcelery.loaders.DjangoLoader",
+ "_MP_FORK_LOGLEVEL_": "10",
+ "ANSIBLE_NOCOLOR": "1",
+ "JOB_CALLBACK_DEBUG": "1",
+ "REST_API_URL": "http://127.0.0.1:8013",
+ "_": "/usr/bin/nohup",
+ "SSH_CONNECTION": "10.0.2.2 61378 10.0.2.15 22",
+ "INVENTORY_HOSTVARS": "True",
+ "SSH_TTY": "/dev/pts/0",
+ "CELERY_LOG_LEVEL": "10",
+ "HOSTNAME": "vagrant-centos64.vagrantup.com",
+ "INVENTORY_ID": "4",
+ "PWD": "/home/vagrant",
+ "CELERY_LOG_REDIRECT": "1",
+ "DJANGO_SETTINGS_MODULE": "awx.settings.development",
+ "MAIL": "/var/spool/mail/vagrant",
+ "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
+ }
+ },
+ {
+ "id": 8,
+ "url": "/api/v1/jobs/2/",
+ "related": {
+ "job_host_summaries": "/api/v1/jobs/2/job_host_summaries/",
+ "activity_stream": "/api/v1/jobs/2/activity_stream/",
+ "job_events": "/api/v1/jobs/2/job_events/",
+ "job_template": "/api/v1/job_templates/3/",
+ "inventory": "/api/v1/inventories/4/",
+ "project": "/api/v1/projects/1/",
+ "credential": "/api/v1/credentials/8/",
+ "start": "/api/v1/jobs/2/start/",
+ "cancel": "/api/v1/jobs/2/cancel/"
+ },
+ "summary_fields": {
+ "credential": {
+ "name": "ssh",
+ "description": "machine creds",
+ "kind": "ssh",
+ "cloud": false
+ },
+ "job_template": {
+ "name": "Hello World",
+ "description": ""
+ },
+ "project": {
+ "name": "Examples",
+ "description": "Ansible example project",
+ "status": "successful"
+ },
+ "inventory": {
+ "name": "Rackspace",
+ "description": "",
+ "has_active_failures": true,
+ "total_hosts": 20,
+ "hosts_with_active_failures": 20,
+ "total_groups": 3,
+ "groups_with_active_failures": 3,
+ "has_inventory_sources": true,
+ "total_inventory_sources": 1,
+ "inventory_sources_with_failures": 1
+ }
+ },
+ "created": "2014-03-07T23:28:06.999Z",
+ "modified": "2014-03-07T23:28:16.424Z",
+ "job_template": 3,
+ "job_type": "playbook_run",
+ "inventory": 4,
+ "project": 1,
+ "playbook": "lamp_simple/site.yml",
+ "credential": 8,
+ "cloud_credential": null,
+ "forks": 0,
+ "limit": "",
+ "verbosity": 0,
+ "extra_vars": "{\n\t\"variable1\": \"some value\",\n\t\"variable2\": \"another value\"\n}",
+ "job_tags": "",
+ "launch_type": "manual",
+ "status": "failed",
+ "failed": true,
+ "result_traceback": "",
+ "passwords_needed_to_start": [],
+ "job_args": "[\"ssh-agent\", \"sh\", \"-c\", \"ssh-add /tmp/tmpoeaDyc && ansible-playbook -i /vagrant/ansible-commander/awx/plugins/inventory/awxrest.py -u vagrant -e '{\\\"variable1\\\": \\\"some value\\\", \\\"variable2\\\": \\\"another value\\\"}' lamp_simple/site.yml\"]",
+ "job_cwd": "/vagrant/ansible-commander/awx/projects/_1__examples",
+ "job_env": {
+ "CELERY_LOG_REDIRECT_LEVEL": "WARNING",
+ "ANSIBLE_PARAMIKO_RECORD_HOST_KEYS": "False",
+ "DJANGO_LIVE_TEST_SERVER_ADDRESS": "localhost:9013-9199",
+ "LESSOPEN": "|/usr/bin/lesspipe.sh %s",
+ "_MP_FORK_LOGFILE_": "",
+ "SSH_CLIENT": "10.0.2.2 61378 22",
+ "CVS_RSH": "ssh",
+ "LOGNAME": "vagrant",
+ "USER": "vagrant",
+ "HOME": "/home/vagrant",
+ "PATH": "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin",
+ "REST_API_TOKEN": "**********************************",
+ "CALLBACK_CONSUMER_PORT": "tcp://127.0.0.1:5557",
+ "ANSIBLE_CALLBACK_PLUGINS": "/vagrant/ansible-commander/awx/plugins/callback",
+ "LANG": "en_US.UTF-8",
+ "HISTCONTROL": "ignoredups",
+ "TERM": "xterm",
+ "SHELL": "/bin/bash",
+ "TZ": "America/New_York",
+ "_MP_FORK_LOGFORMAT_": "[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
+ "SHLVL": "1",
+ "G_BROKEN_FILENAMES": "1",
+ "HISTSIZE": "1000",
+ "CELERY_LOG_FILE": "",
+ "DJANGO_PROJECT_DIR": "/vagrant/ansible-commander",
+ "ANSIBLE_HOST_KEY_CHECKING": "False",
+ "JOB_ID": "2",
+ "PYTHONPATH": "/vagrant/ansible-commander/awx/lib/site-packages:",
+ "CELERY_LOADER": "djcelery.loaders.DjangoLoader",
+ "_MP_FORK_LOGLEVEL_": "10",
+ "ANSIBLE_NOCOLOR": "1",
+ "JOB_CALLBACK_DEBUG": "1",
+ "REST_API_URL": "http://127.0.0.1:8013",
+ "_": "/usr/bin/nohup",
+ "SSH_CONNECTION": "10.0.2.2 61378 10.0.2.15 22",
+ "INVENTORY_HOSTVARS": "True",
+ "SSH_TTY": "/dev/pts/0",
+ "CELERY_LOG_LEVEL": "10",
+ "HOSTNAME": "vagrant-centos64.vagrantup.com",
+ "INVENTORY_ID": "4",
+ "PWD": "/home/vagrant",
+ "CELERY_LOG_REDIRECT": "1",
+ "DJANGO_SETTINGS_MODULE": "awx.settings.development",
+ "MAIL": "/var/spool/mail/vagrant",
+ "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
+ }
+ },
+ {
+ "id": 9,
+ "url": "/api/v1/jobs/2/",
+ "related": {
+ "job_host_summaries": "/api/v1/jobs/2/job_host_summaries/",
+ "activity_stream": "/api/v1/jobs/2/activity_stream/",
+ "job_events": "/api/v1/jobs/2/job_events/",
+ "job_template": "/api/v1/job_templates/3/",
+ "inventory": "/api/v1/inventories/4/",
+ "project": "/api/v1/projects/1/",
+ "credential": "/api/v1/credentials/8/",
+ "start": "/api/v1/jobs/2/start/",
+ "cancel": "/api/v1/jobs/2/cancel/"
+ },
+ "summary_fields": {
+ "credential": {
+ "name": "ssh",
+ "description": "machine creds",
+ "kind": "ssh",
+ "cloud": false
+ },
+ "job_template": {
+ "name": "Hello World",
+ "description": ""
+ },
+ "project": {
+ "name": "Examples",
+ "description": "Ansible example project",
+ "status": "successful"
+ },
+ "inventory": {
+ "name": "Rackspace",
+ "description": "",
+ "has_active_failures": true,
+ "total_hosts": 20,
+ "hosts_with_active_failures": 20,
+ "total_groups": 3,
+ "groups_with_active_failures": 3,
+ "has_inventory_sources": true,
+ "total_inventory_sources": 1,
+ "inventory_sources_with_failures": 1
+ }
+ },
+ "created": "2014-03-07T23:28:06.999Z",
+ "modified": "2014-03-07T23:28:16.424Z",
+ "job_template": 3,
+ "job_type": "playbook_run",
+ "inventory": 4,
+ "project": 1,
+ "playbook": "lamp_simple/site.yml",
+ "credential": 8,
+ "cloud_credential": null,
+ "forks": 0,
+ "limit": "",
+ "verbosity": 0,
+ "extra_vars": "{\n\t\"variable1\": \"some value\",\n\t\"variable2\": \"another value\"\n}",
+ "job_tags": "",
+ "launch_type": "manual",
+ "status": "failed",
+ "failed": true,
+ "result_traceback": "",
+ "passwords_needed_to_start": [],
+ "job_args": "[\"ssh-agent\", \"sh\", \"-c\", \"ssh-add /tmp/tmpoeaDyc && ansible-playbook -i /vagrant/ansible-commander/awx/plugins/inventory/awxrest.py -u vagrant -e '{\\\"variable1\\\": \\\"some value\\\", \\\"variable2\\\": \\\"another value\\\"}' lamp_simple/site.yml\"]",
+ "job_cwd": "/vagrant/ansible-commander/awx/projects/_1__examples",
+ "job_env": {
+ "CELERY_LOG_REDIRECT_LEVEL": "WARNING",
+ "ANSIBLE_PARAMIKO_RECORD_HOST_KEYS": "False",
+ "DJANGO_LIVE_TEST_SERVER_ADDRESS": "localhost:9013-9199",
+ "LESSOPEN": "|/usr/bin/lesspipe.sh %s",
+ "_MP_FORK_LOGFILE_": "",
+ "SSH_CLIENT": "10.0.2.2 61378 22",
+ "CVS_RSH": "ssh",
+ "LOGNAME": "vagrant",
+ "USER": "vagrant",
+ "HOME": "/home/vagrant",
+ "PATH": "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin",
+ "REST_API_TOKEN": "**********************************",
+ "CALLBACK_CONSUMER_PORT": "tcp://127.0.0.1:5557",
+ "ANSIBLE_CALLBACK_PLUGINS": "/vagrant/ansible-commander/awx/plugins/callback",
+ "LANG": "en_US.UTF-8",
+ "HISTCONTROL": "ignoredups",
+ "TERM": "xterm",
+ "SHELL": "/bin/bash",
+ "TZ": "America/New_York",
+ "_MP_FORK_LOGFORMAT_": "[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
+ "SHLVL": "1",
+ "G_BROKEN_FILENAMES": "1",
+ "HISTSIZE": "1000",
+ "CELERY_LOG_FILE": "",
+ "DJANGO_PROJECT_DIR": "/vagrant/ansible-commander",
+ "ANSIBLE_HOST_KEY_CHECKING": "False",
+ "JOB_ID": "2",
+ "PYTHONPATH": "/vagrant/ansible-commander/awx/lib/site-packages:",
+ "CELERY_LOADER": "djcelery.loaders.DjangoLoader",
+ "_MP_FORK_LOGLEVEL_": "10",
+ "ANSIBLE_NOCOLOR": "1",
+ "JOB_CALLBACK_DEBUG": "1",
+ "REST_API_URL": "http://127.0.0.1:8013",
+ "_": "/usr/bin/nohup",
+ "SSH_CONNECTION": "10.0.2.2 61378 10.0.2.15 22",
+ "INVENTORY_HOSTVARS": "True",
+ "SSH_TTY": "/dev/pts/0",
+ "CELERY_LOG_LEVEL": "10",
+ "HOSTNAME": "vagrant-centos64.vagrantup.com",
+ "INVENTORY_ID": "4",
+ "PWD": "/home/vagrant",
+ "CELERY_LOG_REDIRECT": "1",
+ "DJANGO_SETTINGS_MODULE": "awx.settings.development",
+ "MAIL": "/var/spool/mail/vagrant",
+ "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
+ }
+ },
+ {
+ "id": 10,
+ "url": "/api/v1/jobs/2/",
+ "related": {
+ "job_host_summaries": "/api/v1/jobs/2/job_host_summaries/",
+ "activity_stream": "/api/v1/jobs/2/activity_stream/",
+ "job_events": "/api/v1/jobs/2/job_events/",
+ "job_template": "/api/v1/job_templates/3/",
+ "inventory": "/api/v1/inventories/4/",
+ "project": "/api/v1/projects/1/",
+ "credential": "/api/v1/credentials/8/",
+ "start": "/api/v1/jobs/2/start/",
+ "cancel": "/api/v1/jobs/2/cancel/"
+ },
+ "summary_fields": {
+ "credential": {
+ "name": "ssh",
+ "description": "machine creds",
+ "kind": "ssh",
+ "cloud": false
+ },
+ "job_template": {
+ "name": "Hello World",
+ "description": ""
+ },
+ "project": {
+ "name": "Examples",
+ "description": "Ansible example project",
+ "status": "successful"
+ },
+ "inventory": {
+ "name": "Rackspace",
+ "description": "",
+ "has_active_failures": true,
+ "total_hosts": 20,
+ "hosts_with_active_failures": 20,
+ "total_groups": 3,
+ "groups_with_active_failures": 3,
+ "has_inventory_sources": true,
+ "total_inventory_sources": 1,
+ "inventory_sources_with_failures": 1
+ }
+ },
+ "created": "2014-03-07T23:28:06.999Z",
+ "modified": "2014-03-07T23:28:16.424Z",
+ "job_template": 3,
+ "job_type": "playbook_run",
+ "inventory": 4,
+ "project": 1,
+ "playbook": "lamp_simple/site.yml",
+ "credential": 8,
+ "cloud_credential": null,
+ "forks": 0,
+ "limit": "",
+ "verbosity": 0,
+ "extra_vars": "{\n\t\"variable1\": \"some value\",\n\t\"variable2\": \"another value\"\n}",
+ "job_tags": "",
+ "launch_type": "manual",
+ "status": "failed",
+ "failed": true,
+ "result_traceback": "",
+ "passwords_needed_to_start": [],
+ "job_args": "[\"ssh-agent\", \"sh\", \"-c\", \"ssh-add /tmp/tmpoeaDyc && ansible-playbook -i /vagrant/ansible-commander/awx/plugins/inventory/awxrest.py -u vagrant -e '{\\\"variable1\\\": \\\"some value\\\", \\\"variable2\\\": \\\"another value\\\"}' lamp_simple/site.yml\"]",
+ "job_cwd": "/vagrant/ansible-commander/awx/projects/_1__examples",
+ "job_env": {
+ "CELERY_LOG_REDIRECT_LEVEL": "WARNING",
+ "ANSIBLE_PARAMIKO_RECORD_HOST_KEYS": "False",
+ "DJANGO_LIVE_TEST_SERVER_ADDRESS": "localhost:9013-9199",
+ "LESSOPEN": "|/usr/bin/lesspipe.sh %s",
+ "_MP_FORK_LOGFILE_": "",
+ "SSH_CLIENT": "10.0.2.2 61378 22",
+ "CVS_RSH": "ssh",
+ "LOGNAME": "vagrant",
+ "USER": "vagrant",
+ "HOME": "/home/vagrant",
+ "PATH": "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin",
+ "REST_API_TOKEN": "**********************************",
+ "CALLBACK_CONSUMER_PORT": "tcp://127.0.0.1:5557",
+ "ANSIBLE_CALLBACK_PLUGINS": "/vagrant/ansible-commander/awx/plugins/callback",
+ "LANG": "en_US.UTF-8",
+ "HISTCONTROL": "ignoredups",
+ "TERM": "xterm",
+ "SHELL": "/bin/bash",
+ "TZ": "America/New_York",
+ "_MP_FORK_LOGFORMAT_": "[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
+ "SHLVL": "1",
+ "G_BROKEN_FILENAMES": "1",
+ "HISTSIZE": "1000",
+ "CELERY_LOG_FILE": "",
+ "DJANGO_PROJECT_DIR": "/vagrant/ansible-commander",
+ "ANSIBLE_HOST_KEY_CHECKING": "False",
+ "JOB_ID": "2",
+ "PYTHONPATH": "/vagrant/ansible-commander/awx/lib/site-packages:",
+ "CELERY_LOADER": "djcelery.loaders.DjangoLoader",
+ "_MP_FORK_LOGLEVEL_": "10",
+ "ANSIBLE_NOCOLOR": "1",
+ "JOB_CALLBACK_DEBUG": "1",
+ "REST_API_URL": "http://127.0.0.1:8013",
+ "_": "/usr/bin/nohup",
+ "SSH_CONNECTION": "10.0.2.2 61378 10.0.2.15 22",
+ "INVENTORY_HOSTVARS": "True",
+ "SSH_TTY": "/dev/pts/0",
+ "CELERY_LOG_LEVEL": "10",
+ "HOSTNAME": "vagrant-centos64.vagrantup.com",
+ "INVENTORY_ID": "4",
+ "PWD": "/home/vagrant",
+ "CELERY_LOG_REDIRECT": "1",
+ "DJANGO_SETTINGS_MODULE": "awx.settings.development",
+ "MAIL": "/var/spool/mail/vagrant",
+ "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
+ }
}
]
}
\ No newline at end of file
diff --git a/awx/ui/static/sample/data/jobs/running/data.json b/awx/ui/static/sample/data/jobs/running/data.json
new file mode 100644
index 0000000000..29f188ce01
--- /dev/null
+++ b/awx/ui/static/sample/data/jobs/running/data.json
@@ -0,0 +1,679 @@
+{
+ "count": 2,
+ "next": null,
+ "previous": null,
+ "results": [
+ {
+ "id": 20,
+ "url": "/api/v1/jobs/1/",
+ "related": {
+ "job_host_summaries": "/api/v1/jobs/1/job_host_summaries/",
+ "activity_stream": "/api/v1/jobs/1/activity_stream/",
+ "job_events": "/api/v1/jobs/1/job_events/",
+ "job_template": "/api/v1/job_templates/3/",
+ "inventory": "/api/v1/inventories/4/",
+ "project": "/api/v1/projects/1/",
+ "credential": "/api/v1/credentials/8/",
+ "start": "/api/v1/jobs/1/start/",
+ "cancel": "/api/v1/jobs/1/cancel/"
+ },
+ "summary_fields": {
+ "credential": {
+ "name": "ssh",
+ "description": "machine creds",
+ "kind": "ssh",
+ "cloud": false
+ },
+ "job_template": {
+ "name": "Hello World",
+ "description": ""
+ },
+ "project": {
+ "name": "Examples",
+ "description": "Ansible example project",
+ "status": "successful"
+ },
+ "inventory": {
+ "name": "Rackspace",
+ "description": "",
+ "has_active_failures": true,
+ "total_hosts": 20,
+ "hosts_with_active_failures": 20,
+ "total_groups": 3,
+ "groups_with_active_failures": 3,
+ "has_inventory_sources": true,
+ "total_inventory_sources": 1,
+ "inventory_sources_with_failures": 1
+ }
+ },
+ "created": "2014-03-06T16:51:04.557Z",
+ "modified": "2014-03-06T16:51:14.272Z",
+ "job_template": 3,
+ "job_type": "playbook_run",
+ "inventory": 4,
+ "project": 1,
+ "playbook": "lamp_simple/site.yml",
+ "credential": 8,
+ "cloud_credential": null,
+ "forks": 0,
+ "limit": "",
+ "verbosity": 0,
+ "extra_vars": "{\n\t\"variable1\": \"some value\",\n\t\"variable2\": \"another value\"\n}",
+ "job_tags": "",
+ "launch_type": "manual",
+ "status": "failed",
+ "failed": true,
+ "result_traceback": "",
+ "passwords_needed_to_start": [],
+ "job_args": "[\"ssh-agent\", \"sh\", \"-c\", \"ssh-add /tmp/tmp5N437j && ansible-playbook -i /vagrant/ansible-commander/awx/plugins/inventory/awxrest.py -u vagrant -e '{\\\"variable1\\\": \\\"some value\\\", \\\"variable2\\\": \\\"another value\\\"}' lamp_simple/site.yml\"]",
+ "job_cwd": "/vagrant/ansible-commander/awx/projects/_1__examples",
+ "job_env": {
+ "CELERY_LOG_REDIRECT_LEVEL": "WARNING",
+ "ANSIBLE_PARAMIKO_RECORD_HOST_KEYS": "False",
+ "DJANGO_LIVE_TEST_SERVER_ADDRESS": "localhost:9013-9199",
+ "LESSOPEN": "|/usr/bin/lesspipe.sh %s",
+ "_MP_FORK_LOGFILE_": "",
+ "SSH_CLIENT": "10.0.2.2 61378 22",
+ "CVS_RSH": "ssh",
+ "LOGNAME": "vagrant",
+ "USER": "vagrant",
+ "HOME": "/home/vagrant",
+ "PATH": "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin",
+ "REST_API_TOKEN": "**********************************",
+ "CALLBACK_CONSUMER_PORT": "tcp://127.0.0.1:5557",
+ "ANSIBLE_CALLBACK_PLUGINS": "/vagrant/ansible-commander/awx/plugins/callback",
+ "LANG": "en_US.UTF-8",
+ "HISTCONTROL": "ignoredups",
+ "TERM": "xterm",
+ "SHELL": "/bin/bash",
+ "TZ": "America/New_York",
+ "_MP_FORK_LOGFORMAT_": "[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
+ "SHLVL": "1",
+ "G_BROKEN_FILENAMES": "1",
+ "HISTSIZE": "1000",
+ "CELERY_LOG_FILE": "",
+ "DJANGO_PROJECT_DIR": "/vagrant/ansible-commander",
+ "ANSIBLE_HOST_KEY_CHECKING": "False",
+ "JOB_ID": "1",
+ "PYTHONPATH": "/vagrant/ansible-commander/awx/lib/site-packages:",
+ "CELERY_LOADER": "djcelery.loaders.DjangoLoader",
+ "_MP_FORK_LOGLEVEL_": "10",
+ "ANSIBLE_NOCOLOR": "1",
+ "JOB_CALLBACK_DEBUG": "1",
+ "REST_API_URL": "http://127.0.0.1:8013",
+ "_": "/usr/bin/nohup",
+ "SSH_CONNECTION": "10.0.2.2 61378 10.0.2.15 22",
+ "INVENTORY_HOSTVARS": "True",
+ "SSH_TTY": "/dev/pts/0",
+ "CELERY_LOG_LEVEL": "10",
+ "HOSTNAME": "vagrant-centos64.vagrantup.com",
+ "INVENTORY_ID": "4",
+ "PWD": "/home/vagrant",
+ "CELERY_LOG_REDIRECT": "1",
+ "DJANGO_SETTINGS_MODULE": "awx.settings.development",
+ "MAIL": "/var/spool/mail/vagrant",
+ "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
+ }
+ },
+ {
+ "id": 21,
+ "url": "/api/v1/jobs/2/",
+ "related": {
+ "job_host_summaries": "/api/v1/jobs/2/job_host_summaries/",
+ "activity_stream": "/api/v1/jobs/2/activity_stream/",
+ "job_events": "/api/v1/jobs/2/job_events/",
+ "job_template": "/api/v1/job_templates/3/",
+ "inventory": "/api/v1/inventories/4/",
+ "project": "/api/v1/projects/1/",
+ "credential": "/api/v1/credentials/8/",
+ "start": "/api/v1/jobs/2/start/",
+ "cancel": "/api/v1/jobs/2/cancel/"
+ },
+ "summary_fields": {
+ "credential": {
+ "name": "ssh",
+ "description": "machine creds",
+ "kind": "ssh",
+ "cloud": false
+ },
+ "job_template": {
+ "name": "Hello World",
+ "description": ""
+ },
+ "project": {
+ "name": "Examples",
+ "description": "Ansible example project",
+ "status": "successful"
+ },
+ "inventory": {
+ "name": "Rackspace",
+ "description": "",
+ "has_active_failures": true,
+ "total_hosts": 20,
+ "hosts_with_active_failures": 20,
+ "total_groups": 3,
+ "groups_with_active_failures": 3,
+ "has_inventory_sources": true,
+ "total_inventory_sources": 1,
+ "inventory_sources_with_failures": 1
+ }
+ },
+ "created": "2014-03-07T23:28:06.999Z",
+ "modified": "2014-03-07T23:28:16.424Z",
+ "job_template": 3,
+ "job_type": "playbook_run",
+ "inventory": 4,
+ "project": 1,
+ "playbook": "lamp_simple/site.yml",
+ "credential": 8,
+ "cloud_credential": null,
+ "forks": 0,
+ "limit": "",
+ "verbosity": 0,
+ "extra_vars": "{\n\t\"variable1\": \"some value\",\n\t\"variable2\": \"another value\"\n}",
+ "job_tags": "",
+ "launch_type": "manual",
+ "status": "failed",
+ "failed": true,
+ "result_traceback": "",
+ "passwords_needed_to_start": [],
+ "job_args": "[\"ssh-agent\", \"sh\", \"-c\", \"ssh-add /tmp/tmpoeaDyc && ansible-playbook -i /vagrant/ansible-commander/awx/plugins/inventory/awxrest.py -u vagrant -e '{\\\"variable1\\\": \\\"some value\\\", \\\"variable2\\\": \\\"another value\\\"}' lamp_simple/site.yml\"]",
+ "job_cwd": "/vagrant/ansible-commander/awx/projects/_1__examples",
+ "job_env": {
+ "CELERY_LOG_REDIRECT_LEVEL": "WARNING",
+ "ANSIBLE_PARAMIKO_RECORD_HOST_KEYS": "False",
+ "DJANGO_LIVE_TEST_SERVER_ADDRESS": "localhost:9013-9199",
+ "LESSOPEN": "|/usr/bin/lesspipe.sh %s",
+ "_MP_FORK_LOGFILE_": "",
+ "SSH_CLIENT": "10.0.2.2 61378 22",
+ "CVS_RSH": "ssh",
+ "LOGNAME": "vagrant",
+ "USER": "vagrant",
+ "HOME": "/home/vagrant",
+ "PATH": "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin",
+ "REST_API_TOKEN": "**********************************",
+ "CALLBACK_CONSUMER_PORT": "tcp://127.0.0.1:5557",
+ "ANSIBLE_CALLBACK_PLUGINS": "/vagrant/ansible-commander/awx/plugins/callback",
+ "LANG": "en_US.UTF-8",
+ "HISTCONTROL": "ignoredups",
+ "TERM": "xterm",
+ "SHELL": "/bin/bash",
+ "TZ": "America/New_York",
+ "_MP_FORK_LOGFORMAT_": "[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
+ "SHLVL": "1",
+ "G_BROKEN_FILENAMES": "1",
+ "HISTSIZE": "1000",
+ "CELERY_LOG_FILE": "",
+ "DJANGO_PROJECT_DIR": "/vagrant/ansible-commander",
+ "ANSIBLE_HOST_KEY_CHECKING": "False",
+ "JOB_ID": "2",
+ "PYTHONPATH": "/vagrant/ansible-commander/awx/lib/site-packages:",
+ "CELERY_LOADER": "djcelery.loaders.DjangoLoader",
+ "_MP_FORK_LOGLEVEL_": "10",
+ "ANSIBLE_NOCOLOR": "1",
+ "JOB_CALLBACK_DEBUG": "1",
+ "REST_API_URL": "http://127.0.0.1:8013",
+ "_": "/usr/bin/nohup",
+ "SSH_CONNECTION": "10.0.2.2 61378 10.0.2.15 22",
+ "INVENTORY_HOSTVARS": "True",
+ "SSH_TTY": "/dev/pts/0",
+ "CELERY_LOG_LEVEL": "10",
+ "HOSTNAME": "vagrant-centos64.vagrantup.com",
+ "INVENTORY_ID": "4",
+ "PWD": "/home/vagrant",
+ "CELERY_LOG_REDIRECT": "1",
+ "DJANGO_SETTINGS_MODULE": "awx.settings.development",
+ "MAIL": "/var/spool/mail/vagrant",
+ "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
+ }
+ },
+ {
+ "id": 23,
+ "url": "/api/v1/jobs/2/",
+ "related": {
+ "job_host_summaries": "/api/v1/jobs/2/job_host_summaries/",
+ "activity_stream": "/api/v1/jobs/2/activity_stream/",
+ "job_events": "/api/v1/jobs/2/job_events/",
+ "job_template": "/api/v1/job_templates/3/",
+ "inventory": "/api/v1/inventories/4/",
+ "project": "/api/v1/projects/1/",
+ "credential": "/api/v1/credentials/8/",
+ "start": "/api/v1/jobs/2/start/",
+ "cancel": "/api/v1/jobs/2/cancel/"
+ },
+ "summary_fields": {
+ "credential": {
+ "name": "ssh",
+ "description": "machine creds",
+ "kind": "ssh",
+ "cloud": false
+ },
+ "job_template": {
+ "name": "Hello World",
+ "description": ""
+ },
+ "project": {
+ "name": "Examples",
+ "description": "Ansible example project",
+ "status": "successful"
+ },
+ "inventory": {
+ "name": "Rackspace",
+ "description": "",
+ "has_active_failures": true,
+ "total_hosts": 20,
+ "hosts_with_active_failures": 20,
+ "total_groups": 3,
+ "groups_with_active_failures": 3,
+ "has_inventory_sources": true,
+ "total_inventory_sources": 1,
+ "inventory_sources_with_failures": 1
+ }
+ },
+ "created": "2014-03-07T23:28:06.999Z",
+ "modified": "2014-03-07T23:28:16.424Z",
+ "job_template": 3,
+ "job_type": "playbook_run",
+ "inventory": 4,
+ "project": 1,
+ "playbook": "lamp_simple/site.yml",
+ "credential": 8,
+ "cloud_credential": null,
+ "forks": 0,
+ "limit": "",
+ "verbosity": 0,
+ "extra_vars": "{\n\t\"variable1\": \"some value\",\n\t\"variable2\": \"another value\"\n}",
+ "job_tags": "",
+ "launch_type": "manual",
+ "status": "failed",
+ "failed": true,
+ "result_traceback": "",
+ "passwords_needed_to_start": [],
+ "job_args": "[\"ssh-agent\", \"sh\", \"-c\", \"ssh-add /tmp/tmpoeaDyc && ansible-playbook -i /vagrant/ansible-commander/awx/plugins/inventory/awxrest.py -u vagrant -e '{\\\"variable1\\\": \\\"some value\\\", \\\"variable2\\\": \\\"another value\\\"}' lamp_simple/site.yml\"]",
+ "job_cwd": "/vagrant/ansible-commander/awx/projects/_1__examples",
+ "job_env": {
+ "CELERY_LOG_REDIRECT_LEVEL": "WARNING",
+ "ANSIBLE_PARAMIKO_RECORD_HOST_KEYS": "False",
+ "DJANGO_LIVE_TEST_SERVER_ADDRESS": "localhost:9013-9199",
+ "LESSOPEN": "|/usr/bin/lesspipe.sh %s",
+ "_MP_FORK_LOGFILE_": "",
+ "SSH_CLIENT": "10.0.2.2 61378 22",
+ "CVS_RSH": "ssh",
+ "LOGNAME": "vagrant",
+ "USER": "vagrant",
+ "HOME": "/home/vagrant",
+ "PATH": "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin",
+ "REST_API_TOKEN": "**********************************",
+ "CALLBACK_CONSUMER_PORT": "tcp://127.0.0.1:5557",
+ "ANSIBLE_CALLBACK_PLUGINS": "/vagrant/ansible-commander/awx/plugins/callback",
+ "LANG": "en_US.UTF-8",
+ "HISTCONTROL": "ignoredups",
+ "TERM": "xterm",
+ "SHELL": "/bin/bash",
+ "TZ": "America/New_York",
+ "_MP_FORK_LOGFORMAT_": "[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
+ "SHLVL": "1",
+ "G_BROKEN_FILENAMES": "1",
+ "HISTSIZE": "1000",
+ "CELERY_LOG_FILE": "",
+ "DJANGO_PROJECT_DIR": "/vagrant/ansible-commander",
+ "ANSIBLE_HOST_KEY_CHECKING": "False",
+ "JOB_ID": "2",
+ "PYTHONPATH": "/vagrant/ansible-commander/awx/lib/site-packages:",
+ "CELERY_LOADER": "djcelery.loaders.DjangoLoader",
+ "_MP_FORK_LOGLEVEL_": "10",
+ "ANSIBLE_NOCOLOR": "1",
+ "JOB_CALLBACK_DEBUG": "1",
+ "REST_API_URL": "http://127.0.0.1:8013",
+ "_": "/usr/bin/nohup",
+ "SSH_CONNECTION": "10.0.2.2 61378 10.0.2.15 22",
+ "INVENTORY_HOSTVARS": "True",
+ "SSH_TTY": "/dev/pts/0",
+ "CELERY_LOG_LEVEL": "10",
+ "HOSTNAME": "vagrant-centos64.vagrantup.com",
+ "INVENTORY_ID": "4",
+ "PWD": "/home/vagrant",
+ "CELERY_LOG_REDIRECT": "1",
+ "DJANGO_SETTINGS_MODULE": "awx.settings.development",
+ "MAIL": "/var/spool/mail/vagrant",
+ "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
+ }
+ },
+ {
+ "id": 24,
+ "url": "/api/v1/jobs/2/",
+ "related": {
+ "job_host_summaries": "/api/v1/jobs/2/job_host_summaries/",
+ "activity_stream": "/api/v1/jobs/2/activity_stream/",
+ "job_events": "/api/v1/jobs/2/job_events/",
+ "job_template": "/api/v1/job_templates/3/",
+ "inventory": "/api/v1/inventories/4/",
+ "project": "/api/v1/projects/1/",
+ "credential": "/api/v1/credentials/8/",
+ "start": "/api/v1/jobs/2/start/",
+ "cancel": "/api/v1/jobs/2/cancel/"
+ },
+ "summary_fields": {
+ "credential": {
+ "name": "ssh",
+ "description": "machine creds",
+ "kind": "ssh",
+ "cloud": false
+ },
+ "job_template": {
+ "name": "Hello World",
+ "description": ""
+ },
+ "project": {
+ "name": "Examples",
+ "description": "Ansible example project",
+ "status": "successful"
+ },
+ "inventory": {
+ "name": "Rackspace",
+ "description": "",
+ "has_active_failures": true,
+ "total_hosts": 20,
+ "hosts_with_active_failures": 20,
+ "total_groups": 3,
+ "groups_with_active_failures": 3,
+ "has_inventory_sources": true,
+ "total_inventory_sources": 1,
+ "inventory_sources_with_failures": 1
+ }
+ },
+ "created": "2014-03-07T23:28:06.999Z",
+ "modified": "2014-03-07T23:28:16.424Z",
+ "job_template": 3,
+ "job_type": "playbook_run",
+ "inventory": 4,
+ "project": 1,
+ "playbook": "lamp_simple/site.yml",
+ "credential": 8,
+ "cloud_credential": null,
+ "forks": 0,
+ "limit": "",
+ "verbosity": 0,
+ "extra_vars": "{\n\t\"variable1\": \"some value\",\n\t\"variable2\": \"another value\"\n}",
+ "job_tags": "",
+ "launch_type": "manual",
+ "status": "failed",
+ "failed": true,
+ "result_traceback": "",
+ "passwords_needed_to_start": [],
+ "job_args": "[\"ssh-agent\", \"sh\", \"-c\", \"ssh-add /tmp/tmpoeaDyc && ansible-playbook -i /vagrant/ansible-commander/awx/plugins/inventory/awxrest.py -u vagrant -e '{\\\"variable1\\\": \\\"some value\\\", \\\"variable2\\\": \\\"another value\\\"}' lamp_simple/site.yml\"]",
+ "job_cwd": "/vagrant/ansible-commander/awx/projects/_1__examples",
+ "job_env": {
+ "CELERY_LOG_REDIRECT_LEVEL": "WARNING",
+ "ANSIBLE_PARAMIKO_RECORD_HOST_KEYS": "False",
+ "DJANGO_LIVE_TEST_SERVER_ADDRESS": "localhost:9013-9199",
+ "LESSOPEN": "|/usr/bin/lesspipe.sh %s",
+ "_MP_FORK_LOGFILE_": "",
+ "SSH_CLIENT": "10.0.2.2 61378 22",
+ "CVS_RSH": "ssh",
+ "LOGNAME": "vagrant",
+ "USER": "vagrant",
+ "HOME": "/home/vagrant",
+ "PATH": "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin",
+ "REST_API_TOKEN": "**********************************",
+ "CALLBACK_CONSUMER_PORT": "tcp://127.0.0.1:5557",
+ "ANSIBLE_CALLBACK_PLUGINS": "/vagrant/ansible-commander/awx/plugins/callback",
+ "LANG": "en_US.UTF-8",
+ "HISTCONTROL": "ignoredups",
+ "TERM": "xterm",
+ "SHELL": "/bin/bash",
+ "TZ": "America/New_York",
+ "_MP_FORK_LOGFORMAT_": "[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
+ "SHLVL": "1",
+ "G_BROKEN_FILENAMES": "1",
+ "HISTSIZE": "1000",
+ "CELERY_LOG_FILE": "",
+ "DJANGO_PROJECT_DIR": "/vagrant/ansible-commander",
+ "ANSIBLE_HOST_KEY_CHECKING": "False",
+ "JOB_ID": "2",
+ "PYTHONPATH": "/vagrant/ansible-commander/awx/lib/site-packages:",
+ "CELERY_LOADER": "djcelery.loaders.DjangoLoader",
+ "_MP_FORK_LOGLEVEL_": "10",
+ "ANSIBLE_NOCOLOR": "1",
+ "JOB_CALLBACK_DEBUG": "1",
+ "REST_API_URL": "http://127.0.0.1:8013",
+ "_": "/usr/bin/nohup",
+ "SSH_CONNECTION": "10.0.2.2 61378 10.0.2.15 22",
+ "INVENTORY_HOSTVARS": "True",
+ "SSH_TTY": "/dev/pts/0",
+ "CELERY_LOG_LEVEL": "10",
+ "HOSTNAME": "vagrant-centos64.vagrantup.com",
+ "INVENTORY_ID": "4",
+ "PWD": "/home/vagrant",
+ "CELERY_LOG_REDIRECT": "1",
+ "DJANGO_SETTINGS_MODULE": "awx.settings.development",
+ "MAIL": "/var/spool/mail/vagrant",
+ "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
+ }
+ },
+ {
+ "id": 25,
+ "url": "/api/v1/jobs/2/",
+ "related": {
+ "job_host_summaries": "/api/v1/jobs/2/job_host_summaries/",
+ "activity_stream": "/api/v1/jobs/2/activity_stream/",
+ "job_events": "/api/v1/jobs/2/job_events/",
+ "job_template": "/api/v1/job_templates/3/",
+ "inventory": "/api/v1/inventories/4/",
+ "project": "/api/v1/projects/1/",
+ "credential": "/api/v1/credentials/8/",
+ "start": "/api/v1/jobs/2/start/",
+ "cancel": "/api/v1/jobs/2/cancel/"
+ },
+ "summary_fields": {
+ "credential": {
+ "name": "ssh",
+ "description": "machine creds",
+ "kind": "ssh",
+ "cloud": false
+ },
+ "job_template": {
+ "name": "Hello World",
+ "description": ""
+ },
+ "project": {
+ "name": "Examples",
+ "description": "Ansible example project",
+ "status": "successful"
+ },
+ "inventory": {
+ "name": "Rackspace",
+ "description": "",
+ "has_active_failures": true,
+ "total_hosts": 20,
+ "hosts_with_active_failures": 20,
+ "total_groups": 3,
+ "groups_with_active_failures": 3,
+ "has_inventory_sources": true,
+ "total_inventory_sources": 1,
+ "inventory_sources_with_failures": 1
+ }
+ },
+ "created": "2014-03-07T23:28:06.999Z",
+ "modified": "2014-03-07T23:28:16.424Z",
+ "job_template": 3,
+ "job_type": "playbook_run",
+ "inventory": 4,
+ "project": 1,
+ "playbook": "lamp_simple/site.yml",
+ "credential": 8,
+ "cloud_credential": null,
+ "forks": 0,
+ "limit": "",
+ "verbosity": 0,
+ "extra_vars": "{\n\t\"variable1\": \"some value\",\n\t\"variable2\": \"another value\"\n}",
+ "job_tags": "",
+ "launch_type": "manual",
+ "status": "failed",
+ "failed": true,
+ "result_traceback": "",
+ "passwords_needed_to_start": [],
+ "job_args": "[\"ssh-agent\", \"sh\", \"-c\", \"ssh-add /tmp/tmpoeaDyc && ansible-playbook -i /vagrant/ansible-commander/awx/plugins/inventory/awxrest.py -u vagrant -e '{\\\"variable1\\\": \\\"some value\\\", \\\"variable2\\\": \\\"another value\\\"}' lamp_simple/site.yml\"]",
+ "job_cwd": "/vagrant/ansible-commander/awx/projects/_1__examples",
+ "job_env": {
+ "CELERY_LOG_REDIRECT_LEVEL": "WARNING",
+ "ANSIBLE_PARAMIKO_RECORD_HOST_KEYS": "False",
+ "DJANGO_LIVE_TEST_SERVER_ADDRESS": "localhost:9013-9199",
+ "LESSOPEN": "|/usr/bin/lesspipe.sh %s",
+ "_MP_FORK_LOGFILE_": "",
+ "SSH_CLIENT": "10.0.2.2 61378 22",
+ "CVS_RSH": "ssh",
+ "LOGNAME": "vagrant",
+ "USER": "vagrant",
+ "HOME": "/home/vagrant",
+ "PATH": "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin",
+ "REST_API_TOKEN": "**********************************",
+ "CALLBACK_CONSUMER_PORT": "tcp://127.0.0.1:5557",
+ "ANSIBLE_CALLBACK_PLUGINS": "/vagrant/ansible-commander/awx/plugins/callback",
+ "LANG": "en_US.UTF-8",
+ "HISTCONTROL": "ignoredups",
+ "TERM": "xterm",
+ "SHELL": "/bin/bash",
+ "TZ": "America/New_York",
+ "_MP_FORK_LOGFORMAT_": "[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
+ "SHLVL": "1",
+ "G_BROKEN_FILENAMES": "1",
+ "HISTSIZE": "1000",
+ "CELERY_LOG_FILE": "",
+ "DJANGO_PROJECT_DIR": "/vagrant/ansible-commander",
+ "ANSIBLE_HOST_KEY_CHECKING": "False",
+ "JOB_ID": "2",
+ "PYTHONPATH": "/vagrant/ansible-commander/awx/lib/site-packages:",
+ "CELERY_LOADER": "djcelery.loaders.DjangoLoader",
+ "_MP_FORK_LOGLEVEL_": "10",
+ "ANSIBLE_NOCOLOR": "1",
+ "JOB_CALLBACK_DEBUG": "1",
+ "REST_API_URL": "http://127.0.0.1:8013",
+ "_": "/usr/bin/nohup",
+ "SSH_CONNECTION": "10.0.2.2 61378 10.0.2.15 22",
+ "INVENTORY_HOSTVARS": "True",
+ "SSH_TTY": "/dev/pts/0",
+ "CELERY_LOG_LEVEL": "10",
+ "HOSTNAME": "vagrant-centos64.vagrantup.com",
+ "INVENTORY_ID": "4",
+ "PWD": "/home/vagrant",
+ "CELERY_LOG_REDIRECT": "1",
+ "DJANGO_SETTINGS_MODULE": "awx.settings.development",
+ "MAIL": "/var/spool/mail/vagrant",
+ "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
+ }
+ },
+ {
+ "id": 26,
+ "url": "/api/v1/jobs/2/",
+ "related": {
+ "job_host_summaries": "/api/v1/jobs/2/job_host_summaries/",
+ "activity_stream": "/api/v1/jobs/2/activity_stream/",
+ "job_events": "/api/v1/jobs/2/job_events/",
+ "job_template": "/api/v1/job_templates/3/",
+ "inventory": "/api/v1/inventories/4/",
+ "project": "/api/v1/projects/1/",
+ "credential": "/api/v1/credentials/8/",
+ "start": "/api/v1/jobs/2/start/",
+ "cancel": "/api/v1/jobs/2/cancel/"
+ },
+ "summary_fields": {
+ "credential": {
+ "name": "ssh",
+ "description": "machine creds",
+ "kind": "ssh",
+ "cloud": false
+ },
+ "job_template": {
+ "name": "Hello World",
+ "description": ""
+ },
+ "project": {
+ "name": "Examples",
+ "description": "Ansible example project",
+ "status": "successful"
+ },
+ "inventory": {
+ "name": "Rackspace",
+ "description": "",
+ "has_active_failures": true,
+ "total_hosts": 20,
+ "hosts_with_active_failures": 20,
+ "total_groups": 3,
+ "groups_with_active_failures": 3,
+ "has_inventory_sources": true,
+ "total_inventory_sources": 1,
+ "inventory_sources_with_failures": 1
+ }
+ },
+ "created": "2014-03-07T23:28:06.999Z",
+ "modified": "2014-03-07T23:28:16.424Z",
+ "job_template": 3,
+ "job_type": "playbook_run",
+ "inventory": 4,
+ "project": 1,
+ "playbook": "lamp_simple/site.yml",
+ "credential": 8,
+ "cloud_credential": null,
+ "forks": 0,
+ "limit": "",
+ "verbosity": 0,
+ "extra_vars": "{\n\t\"variable1\": \"some value\",\n\t\"variable2\": \"another value\"\n}",
+ "job_tags": "",
+ "launch_type": "manual",
+ "status": "failed",
+ "failed": true,
+ "result_traceback": "",
+ "passwords_needed_to_start": [],
+ "job_args": "[\"ssh-agent\", \"sh\", \"-c\", \"ssh-add /tmp/tmpoeaDyc && ansible-playbook -i /vagrant/ansible-commander/awx/plugins/inventory/awxrest.py -u vagrant -e '{\\\"variable1\\\": \\\"some value\\\", \\\"variable2\\\": \\\"another value\\\"}' lamp_simple/site.yml\"]",
+ "job_cwd": "/vagrant/ansible-commander/awx/projects/_1__examples",
+ "job_env": {
+ "CELERY_LOG_REDIRECT_LEVEL": "WARNING",
+ "ANSIBLE_PARAMIKO_RECORD_HOST_KEYS": "False",
+ "DJANGO_LIVE_TEST_SERVER_ADDRESS": "localhost:9013-9199",
+ "LESSOPEN": "|/usr/bin/lesspipe.sh %s",
+ "_MP_FORK_LOGFILE_": "",
+ "SSH_CLIENT": "10.0.2.2 61378 22",
+ "CVS_RSH": "ssh",
+ "LOGNAME": "vagrant",
+ "USER": "vagrant",
+ "HOME": "/home/vagrant",
+ "PATH": "/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/vagrant/bin",
+ "REST_API_TOKEN": "**********************************",
+ "CALLBACK_CONSUMER_PORT": "tcp://127.0.0.1:5557",
+ "ANSIBLE_CALLBACK_PLUGINS": "/vagrant/ansible-commander/awx/plugins/callback",
+ "LANG": "en_US.UTF-8",
+ "HISTCONTROL": "ignoredups",
+ "TERM": "xterm",
+ "SHELL": "/bin/bash",
+ "TZ": "America/New_York",
+ "_MP_FORK_LOGFORMAT_": "[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
+ "SHLVL": "1",
+ "G_BROKEN_FILENAMES": "1",
+ "HISTSIZE": "1000",
+ "CELERY_LOG_FILE": "",
+ "DJANGO_PROJECT_DIR": "/vagrant/ansible-commander",
+ "ANSIBLE_HOST_KEY_CHECKING": "False",
+ "JOB_ID": "2",
+ "PYTHONPATH": "/vagrant/ansible-commander/awx/lib/site-packages:",
+ "CELERY_LOADER": "djcelery.loaders.DjangoLoader",
+ "_MP_FORK_LOGLEVEL_": "10",
+ "ANSIBLE_NOCOLOR": "1",
+ "JOB_CALLBACK_DEBUG": "1",
+ "REST_API_URL": "http://127.0.0.1:8013",
+ "_": "/usr/bin/nohup",
+ "SSH_CONNECTION": "10.0.2.2 61378 10.0.2.15 22",
+ "INVENTORY_HOSTVARS": "True",
+ "SSH_TTY": "/dev/pts/0",
+ "CELERY_LOG_LEVEL": "10",
+ "HOSTNAME": "vagrant-centos64.vagrantup.com",
+ "INVENTORY_ID": "4",
+ "PWD": "/home/vagrant",
+ "CELERY_LOG_REDIRECT": "1",
+ "DJANGO_SETTINGS_MODULE": "awx.settings.development",
+ "MAIL": "/var/spool/mail/vagrant",
+ "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:"
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/awx/ui/templates/ui/index.html b/awx/ui/templates/ui/index.html
index 8dd4354096..b116d40dad 100644
--- a/awx/ui/templates/ui/index.html
+++ b/awx/ui/templates/ui/index.html
@@ -107,7 +107,8 @@
-
+
+