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 @@ - + +