diff mbox series

toaster/toastergui: Bug-fix verify given layer path only if import/add local layer

Message ID 20240104151818.133335-1-alassane.yattara@savoirfairelinux.com
State New
Headers show
Series toaster/toastergui: Bug-fix verify given layer path only if import/add local layer | expand

Commit Message

Alassane Yattara Jan. 4, 2024, 3:18 p.m. UTC
Signed-off-by: Alassane Yattara <alassane.yattara@savoirfairelinux.com>
---
 lib/toaster/toastergui/api.py | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

Comments

Richard Purdie Jan. 5, 2024, midnight UTC | #1
On Thu, 2024-01-04 at 16:18 +0100, Alassane Yattara wrote:
> Signed-off-by: Alassane Yattara <alassane.yattara@savoirfairelinux.com>
> ---
>  lib/toaster/toastergui/api.py | 13 ++++++++-----
>  1 file changed, 8 insertions(+), 5 deletions(-)
> 
> diff --git a/lib/toaster/toastergui/api.py b/lib/toaster/toastergui/api.py
> index a06ffc00..e367bd91 100644
> --- a/lib/toaster/toastergui/api.py
> +++ b/lib/toaster/toastergui/api.py
> @@ -227,7 +227,7 @@ class XhrSetDefaultImageUrl(View):
>  #    same logical name
>  #  * Each project that uses a layer will have its own
>  #    LayerVersion and Project Layer for it
> -#  * During the Paroject delete process, when the last
> +#  * During the Project delete process, when the last
>  #    LayerVersion for a 'local_source_dir' layer is deleted
>  #    then the Layer record is deleted to remove orphans
>  #
> @@ -457,15 +457,18 @@ class XhrLayer(View):
>                               'layerdetailurl':
>                               layer_dep.get_detailspage_url(project.pk)})
>  
> -            # Scan the layer's content and update components
> -            scan_layer_content(layer,layer_version)
> +            # Only scan_layer_content if layer is local
> +            if layer_data.get('local_source_dir', None):
> +                # Scan the layer's content and update components
> +                scan_layer_content(layer,layer_version)
>  
>          except Layer_Version.DoesNotExist:
>              return error_response("layer-dep-not-found")
>          except Project.DoesNotExist:
>              return error_response("project-not-found")
> -        except KeyError:
> -            return error_response("incorrect-parameters")
> +        except KeyError as e:
> +            _log("KeyError: %s" % e)
> +            return error_response(f"incorrect-parameters")
>  
>          return JsonResponse({'error': "ok",
>                               'imported_layer': {

Thanks! I made 4 test runs with this applied and the failure counts
reduced significantly, there was only one failure on one build:

https://autobuilder.yoctoproject.org/typhoon/#/builders/161/builds/116

I've merged this patch and scheduled a few more test runs.

Cheers,

Richard
Richard Purdie Jan. 5, 2024, 7:49 a.m. UTC | #2
On Fri, 2024-01-05 at 00:00 +0000, Richard Purdie via
lists.yoctoproject.org wrote:
> On Thu, 2024-01-04 at 16:18 +0100, Alassane Yattara wrote:
> > Signed-off-by: Alassane Yattara <alassane.yattara@savoirfairelinux.com>
> > ---
> >  lib/toaster/toastergui/api.py | 13 ++++++++-----
> >  1 file changed, 8 insertions(+), 5 deletions(-)
> > 
> > diff --git a/lib/toaster/toastergui/api.py b/lib/toaster/toastergui/api.py
> > index a06ffc00..e367bd91 100644
> > --- a/lib/toaster/toastergui/api.py
> > +++ b/lib/toaster/toastergui/api.py
> > @@ -227,7 +227,7 @@ class XhrSetDefaultImageUrl(View):
> >  #    same logical name
> >  #  * Each project that uses a layer will have its own
> >  #    LayerVersion and Project Layer for it
> > -#  * During the Paroject delete process, when the last
> > +#  * During the Project delete process, when the last
> >  #    LayerVersion for a 'local_source_dir' layer is deleted
> >  #    then the Layer record is deleted to remove orphans
> >  #
> > @@ -457,15 +457,18 @@ class XhrLayer(View):
> >                               'layerdetailurl':
> >                               layer_dep.get_detailspage_url(project.pk)})
> >  
> > -            # Scan the layer's content and update components
> > -            scan_layer_content(layer,layer_version)
> > +            # Only scan_layer_content if layer is local
> > +            if layer_data.get('local_source_dir', None):
> > +                # Scan the layer's content and update components
> > +                scan_layer_content(layer,layer_version)
> >  
> >          except Layer_Version.DoesNotExist:
> >              return error_response("layer-dep-not-found")
> >          except Project.DoesNotExist:
> >              return error_response("project-not-found")
> > -        except KeyError:
> > -            return error_response("incorrect-parameters")
> > +        except KeyError as e:
> > +            _log("KeyError: %s" % e)
> > +            return error_response(f"incorrect-parameters")
> >  
> >          return JsonResponse({'error': "ok",
> >                               'imported_layer': {
> 
> Thanks! I made 4 test runs with this applied and the failure counts
> reduced significantly, there was only one failure on one build:
> 
> https://autobuilder.yoctoproject.org/typhoon/#/builders/161/builds/116
> 
> I've merged this patch and scheduled a few more test runs.

I ran 5 more runs, we had 2 successes and 3 failures:

https://autobuilder.yoctoproject.org/typhoon/#/builders/161/builds/119
tests/functional/test_project_page_tab_config.py::TestProjectConfigTab::test_project_config_tab_right_section

https://autobuilder.yoctoproject.org/typhoon/#/builders/161/builds/120
tests/functional/test_create_new_project.py::TestCreateNewProject::test_create_new_project_dunfell

https://autobuilder.yoctoproject.org/typhoon/#/builders/161/builds/122
tests/functional/test_create_new_project.py::TestCreateNewProject::test_create_new_project_dunfell

With 119 above being:
tests/functional/test_project_page_tab_config.py::TestProjectConfigTab::test_image_recipe_show_rows

So I think there is still something making the tests a little
unreliable unfortunately :(.

Cheers,

Richard
diff mbox series

Patch

diff --git a/lib/toaster/toastergui/api.py b/lib/toaster/toastergui/api.py
index a06ffc00..e367bd91 100644
--- a/lib/toaster/toastergui/api.py
+++ b/lib/toaster/toastergui/api.py
@@ -227,7 +227,7 @@  class XhrSetDefaultImageUrl(View):
 #    same logical name
 #  * Each project that uses a layer will have its own
 #    LayerVersion and Project Layer for it
-#  * During the Paroject delete process, when the last
+#  * During the Project delete process, when the last
 #    LayerVersion for a 'local_source_dir' layer is deleted
 #    then the Layer record is deleted to remove orphans
 #
@@ -457,15 +457,18 @@  class XhrLayer(View):
                              'layerdetailurl':
                              layer_dep.get_detailspage_url(project.pk)})
 
-            # Scan the layer's content and update components
-            scan_layer_content(layer,layer_version)
+            # Only scan_layer_content if layer is local
+            if layer_data.get('local_source_dir', None):
+                # Scan the layer's content and update components
+                scan_layer_content(layer,layer_version)
 
         except Layer_Version.DoesNotExist:
             return error_response("layer-dep-not-found")
         except Project.DoesNotExist:
             return error_response("project-not-found")
-        except KeyError:
-            return error_response("incorrect-parameters")
+        except KeyError as e:
+            _log("KeyError: %s" % e)
+            return error_response(f"incorrect-parameters")
 
         return JsonResponse({'error': "ok",
                              'imported_layer': {