[Toaster] [PATCH 04/11] toaster: libtoaster Update implementation of startABuild and cancelABuild
Smith, Elliot
elliot.smith at intel.com
Fri Feb 26 03:55:16 PST 2016
I spotted an issue, inline below.
On 25 February 2016 at 18:21, Michael Wood <michael.g.wood at intel.com> wrote:
> 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>
> ---
> .../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) {
>
The error function has an argument _data, but in the body of that function
you have:
error: function (_data) {
console.warn("Call failed");
console.warn(_data);
if (onfail) onfail(data); <- reference to data, not _data
When a failure does occur (as it did for me), onfail() doesn't execute
(because of a ReferenceError to data), so the page hangs.
> 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 292ceb7..78a9506 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 6994bcc..ed15c59 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
>
> --
> _______________________________________________
> toaster mailing list
> toaster at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster
>
--
Elliot Smith
Software Engineer
Intel Open Source Technology Centre
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/toaster/attachments/20160226/bf1cfe68/attachment.html>
More information about the toaster
mailing list