summaryrefslogtreecommitdiffstats
path: root/lib/toaster/toastergui/api.py
diff options
context:
space:
mode:
authorMichael Wood <michael.g.wood@intel.com>2016-12-09 16:52:51 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-12-12 20:44:47 +0000
commit3fa5170c98c699d2a7a8380b696fc599efcc5dee (patch)
tree5c35a506c588f01a05e0a6e3dc57d67edce5fbfc /lib/toaster/toastergui/api.py
parent28114be42174095b812a93d4b5a0e01e953d74f8 (diff)
downloadbitbake-contrib-3fa5170c98c699d2a7a8380b696fc599efcc5dee.tar.gz
toaster: api Add GET REST API for Layer information
Add a get API for returning information about layers. Signed-off-by: Michael Wood <michael.g.wood@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/toaster/toastergui/api.py')
-rw-r--r--lib/toaster/toastergui/api.py55
1 files changed, 52 insertions, 3 deletions
diff --git a/lib/toaster/toastergui/api.py b/lib/toaster/toastergui/api.py
index 5be633ed1..5b035505c 100644
--- a/lib/toaster/toastergui/api.py
+++ b/lib/toaster/toastergui/api.py
@@ -139,9 +139,55 @@ class XhrBuildRequest(View):
class XhrLayer(View):
""" Delete, Get, Add and Update Layer information
- Methods: POST DELETE PUT
+ Methods: GET POST DELETE PUT
"""
+ def get(self, request, *args, **kwargs):
+ """
+ Get layer information
+
+ Method: GET
+ Entry point: /xhr_layer/<project id>/<layerversion_id>
+ """
+
+ try:
+ layer_version = Layer_Version.objects.get(
+ pk=kwargs['layerversion_id'])
+
+ project = Project.objects.get(pk=kwargs['pid'])
+
+ project_layers = ProjectLayer.objects.filter(
+ project=project).values_list("layercommit_id",
+ flat=True)
+
+ ret = {
+ 'error': 'ok',
+ 'id': layer_version.pk,
+ 'name': layer_version.layer.name,
+ 'layerdetailurl':
+ layer_version.get_detailspage_url(project.pk),
+ 'vcs_ref': layer_version.get_vcs_reference(),
+ 'vcs_url': layer_version.layer.vcs_url,
+ 'local_source_dir': layer_version.layer.local_source_dir,
+ 'layerdeps': {
+ "list": [
+ {
+ "id": dep.id,
+ "name": dep.layer.name,
+ "layerdetailurl":
+ dep.get_detailspage_url(project.pk),
+ "vcs_url": dep.layer.vcs_url,
+ "vcs_reference": dep.get_vcs_reference()
+ }
+ for dep in layer_version.get_alldeps(project.id)]
+ },
+ 'projectlayers': list(project_layers)
+ }
+
+ return JsonResponse(ret)
+ except Layer_Version.DoesNotExist:
+ error_response("No such layer")
+
def post(self, request, *args, **kwargs):
"""
Update a layer
@@ -211,7 +257,7 @@ class XhrLayer(View):
""" Add a new layer
Method: PUT
- Entry point: /xhr_layer/
+ Entry point: /xhr_layer/<project id>/
Args:
project_id, name,
[vcs_url, dir_path, git_ref], [local_source_dir], [layer_deps
@@ -296,7 +342,7 @@ class XhrLayer(View):
""" Delete an imported layer
Method: DELETE
- Entry point: /xhr_layer/<layerversion_id>
+ Entry point: /xhr_layer/<projed id>/<layerversion_id>
"""
try:
@@ -888,6 +934,9 @@ class XhrProject(View):
"url": layer.layercommit.layer.layer_index_url,
"layerdetailurl": layer.layercommit.get_detailspage_url(
project.pk),
+ "xhrLayerUrl": reverse("xhr_layer",
+ args=(project.pk,
+ layer.layercommit.pk)),
"layersource": layer.layercommit.layer_source
})