[Toaster] [PATCH v6 22/41] toaster: libtoaster Update implementation of startABuild and cancelABuild
Ed Bartosh
ed.bartosh at linux.intel.com
Wed Mar 23 01:15:13 PDT 2016
From: Michael Wood <michael.g.wood at intel.com>
Update the implementation of startABuild and cancelAbuild to reflect
changes to the backend api. We now have a dedicated endpoint to make
calls into so add this url to libtoaster.ctx and allow passing null in
as a url value to indicate that we want to use the current project
Also:
- Fix some documentation comments
- Add the convenience of passing in an array of targets to startABuild
Signed-off-by: Michael Wood <michael.g.wood at intel.com>
Signed-off-by: Ed Bartosh <ed.bartosh at linux.intel.com>
---
.../toaster/toastergui/static/js/customrecipe.js | 4 +--
.../lib/toaster/toastergui/static/js/layerBtn.js | 3 +-
.../lib/toaster/toastergui/static/js/libtoaster.js | 41 ++++++++++++++--------
.../toaster/toastergui/static/js/projectpage.js | 4 +--
.../toaster/toastergui/static/js/projecttopbar.js | 6 ++--
.../toaster/toastergui/static/js/recipedetails.js | 4 +--
bitbake/lib/toaster/toastergui/templates/base.html | 1 +
7 files changed, 34 insertions(+), 29 deletions(-)
diff --git a/bitbake/lib/toaster/toastergui/static/js/customrecipe.js b/bitbake/lib/toaster/toastergui/static/js/customrecipe.js
index 3c57899..131ac2a 100644
--- a/bitbake/lib/toaster/toastergui/static/js/customrecipe.js
+++ b/bitbake/lib/toaster/toastergui/static/js/customrecipe.js
@@ -207,9 +207,7 @@ function customRecipePageInit(ctx) {
/* Trigger a build of your custom image */
$(".build-custom-image").click(function(){
- libtoaster.startABuild(libtoaster.ctx.projectBuildsUrl,
- libtoaster.ctx.projectId,
- ctx.recipe.name,
+ libtoaster.startABuild(null, ctx.recipe.name,
function(){
window.location.replace(libtoaster.ctx.projectBuildsUrl);
});
diff --git a/bitbake/lib/toaster/toastergui/static/js/layerBtn.js b/bitbake/lib/toaster/toastergui/static/js/layerBtn.js
index b2666ab..aa43284 100644
--- a/bitbake/lib/toaster/toastergui/static/js/layerBtn.js
+++ b/bitbake/lib/toaster/toastergui/static/js/layerBtn.js
@@ -60,8 +60,7 @@ function layerBtnsInit() {
e.preventDefault();
var recipe = $(this).data('recipe-name');
- libtoaster.startABuild(libtoaster.ctx.projectBuildsUrl,
- libtoaster.ctx.projectId, recipe,
+ libtoaster.startABuild(null, recipe,
function(){
/* Success */
window.location.replace(libtoaster.ctx.projectBuildsUrl);
diff --git a/bitbake/lib/toaster/toastergui/static/js/libtoaster.js b/bitbake/lib/toaster/toastergui/static/js/libtoaster.js
index b6b49b6..8d1d20f 100644
--- a/bitbake/lib/toaster/toastergui/static/js/libtoaster.js
+++ b/bitbake/lib/toaster/toastergui/static/js/libtoaster.js
@@ -90,27 +90,35 @@ var libtoaster = (function (){
jQElement.data('typeahead').render = customRenderFunc;
}
- /*
- * url - the url of the xhr build */
- function _startABuild (url, project_id, targets, onsuccess, onfail) {
+ /* startABuild:
+ * url: xhr_buildrequest or null for current project
+ * targets: an array or space separated list of targets to build
+ * onsuccess: callback for successful execution
+ * onfail: callback for failed execution
+ */
+ function _startABuild (url, targets, onsuccess, onfail) {
- var data = {
- project_id : project_id,
- targets : targets,
+ if (!url)
+ url = libtoaster.ctx.xhrBuildRequestUrl;
+
+ /* Flatten the array of targets into a space spearated list */
+ if (targets instanceof Array){
+ targets = targets.reduce(function(prevV, nextV){
+ return prev + ' ' + next;
+ });
}
$.ajax( {
type: "POST",
url: url,
- data: data,
+ data: { 'targets' : targets },
headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
success: function (_data) {
- /* No proper reponse YOCTO #7995
if (_data.error !== "ok") {
console.warn(_data.error);
- } else { */
+ } else {
if (onsuccess !== undefined) onsuccess(_data);
- // }
+ }
},
error: function (_data) {
console.warn("Call failed");
@@ -120,22 +128,25 @@ var libtoaster = (function (){
}
/* cancelABuild:
- * url: projectbuilds
- * builds_ids: space separated list of build request ids
+ * url: xhr_buildrequest url or null for current project
+ * buildRequestIds: space separated list of build request ids
* onsuccess: callback for successful execution
* onfail: callback for failed execution
*/
- function _cancelABuild(url, build_ids, onsuccess, onfail){
+ function _cancelABuild(url, buildRequestIds, onsuccess, onfail){
+ if (!url)
+ url = libtoaster.ctx.xhrBuildRequestUrl;
+
$.ajax( {
type: "POST",
url: url,
- data: { 'buildCancel': build_ids },
+ data: { 'buildCancel': buildRequestIds },
headers: { 'X-CSRFToken' : $.cookie('csrftoken')},
success: function (_data) {
if (_data.error !== "ok") {
console.warn(_data.error);
} else {
- if (onsuccess !== undefined) onsuccess(_data);
+ if (onsuccess) onsuccess(_data);
}
},
error: function (_data) {
diff --git a/bitbake/lib/toaster/toastergui/static/js/projectpage.js b/bitbake/lib/toaster/toastergui/static/js/projectpage.js
index 6655a18..3013416 100644
--- a/bitbake/lib/toaster/toastergui/static/js/projectpage.js
+++ b/bitbake/lib/toaster/toastergui/static/js/projectpage.js
@@ -232,9 +232,7 @@ function projectPageInit(ctx) {
toBuild = toBuild.trim();
- libtoaster.startABuild(libtoaster.ctx.projectBuildsUrl,
- libtoaster.ctx.projectId,
- toBuild,
+ libtoaster.startABuild(null, toBuild,
function(){
/* Build request started */
window.location.replace(libtoaster.ctx.projectBuildsUrl);
diff --git a/bitbake/lib/toaster/toastergui/static/js/projecttopbar.js b/bitbake/lib/toaster/toastergui/static/js/projecttopbar.js
index 58a32a0..b09f974 100644
--- a/bitbake/lib/toaster/toastergui/static/js/projecttopbar.js
+++ b/bitbake/lib/toaster/toastergui/static/js/projecttopbar.js
@@ -82,9 +82,9 @@ function projectTopBarInit(ctx) {
selectedTarget = { name: newBuildTargetInput.val() };
/* Fire off the build */
- libtoaster.startABuild(libtoaster.ctx.projectBuildsUrl,
- null, selectedTarget.name, function(){
- window.location.replace(libtoaster.ctx.projectBuildsUrl);
+ libtoaster.startABuild(null, selectedTarget.name,
+ function(){
+ window.location.replace(libtoaster.ctx.projectBuildsUrl);
}, null);
});
}
diff --git a/bitbake/lib/toaster/toastergui/static/js/recipedetails.js b/bitbake/lib/toaster/toastergui/static/js/recipedetails.js
index 2bfd0a4..d5f9eac 100644
--- a/bitbake/lib/toaster/toastergui/static/js/recipedetails.js
+++ b/bitbake/lib/toaster/toastergui/static/js/recipedetails.js
@@ -42,9 +42,7 @@ function recipeDetailsPageInit(ctx){
/* Trigger a build of your custom image */
$(".build-recipe-btn").click(function(){
- libtoaster.startABuild(libtoaster.ctx.projectBuildsUrl,
- libtoaster.ctx.projectId,
- ctx.recipe.name,
+ libtoaster.startABuild(null, ctx.recipe.name,
function(){
window.location.replace(libtoaster.ctx.projectBuildsUrl);
});
diff --git a/bitbake/lib/toaster/toastergui/templates/base.html b/bitbake/lib/toaster/toastergui/templates/base.html
index 121a75c..192f9fb 100644
--- a/bitbake/lib/toaster/toastergui/templates/base.html
+++ b/bitbake/lib/toaster/toastergui/templates/base.html
@@ -47,6 +47,7 @@
projectBuildsUrl: {% url 'projectbuilds' project.id as pburl %}{{pburl|json}},
xhrCustomRecipeUrl : "{% url 'xhr_customrecipe' %}",
projectId : {{project.id}},
+ xhrBuildRequestUrl: "{% url 'xhr_buildrequest' project.id %}",
{% else %}
projectId : undefined,
projectPageUrl : undefined,
--
2.1.4
More information about the toaster
mailing list