Skip to content

Commit ea3dd6e

Browse files
committed
Store the layer data in the extra_data for display in the UI
Signed-off-by: tdruez <[email protected]>
1 parent 4e492e3 commit ea3dd6e

File tree

4 files changed

+72
-11
lines changed

4 files changed

+72
-11
lines changed

scanpipe/pipes/docker.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -190,20 +190,29 @@ def create_codebase_resources(project, image: Image) -> None:
190190
for layer_index, layer in enumerate(image.layers, start=1):
191191
layer_tag = get_layer_tag(image.image_id, layer.layer_id, layer_index)
192192

193-
pipes.make_codebase_resource(
194-
project=project,
195-
location=str(layer.extracted_location),
196-
tag=layer_tag,
197-
extra_data={"layer": {"created_by": layer.created_by}},
198-
)
199-
193+
layer_file_count = 0
200194
for resource in layer.get_resources(with_dir=True):
201195
pipes.make_codebase_resource(
202196
project=project,
203197
location=resource.location,
204198
rootfs_path=resource.path,
205199
tag=layer_tag,
206200
)
201+
if resource.is_file:
202+
layer_file_count += 1
203+
204+
layer_data = layer.to_dict()
205+
layer_data["file_count"] = layer_file_count
206+
layer_data.pop("extracted_location", None)
207+
layer_data.pop("archive_location", None)
208+
209+
pipes.make_codebase_resource(
210+
project=project,
211+
location=str(layer.extracted_location),
212+
tag=layer_tag,
213+
# Store the layer data in the extra_data for display in the UI
214+
extra_data={"layer": layer_data},
215+
)
207216

208217

209218
def create_system_package(project, purl, package, layer, layer_tag):

scanpipe/tests/data/docker/debian_scan_codebase.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,20 @@
511511
"is_key_file": false,
512512
"extra_data": {
513513
"layer": {
514-
"created_by": "/bin/sh -c #(nop) ADD file:37744639836b248c88f6e126619829290b45c233309538310e8fffb82e98eaf8 in / "
514+
"os": null,
515+
"author": null,
516+
"labels": [],
517+
"sha256": "8a63761caf6d45e65b8e6cdc2e0c03c55625fd142ec3356b80a9ea4a34b11b66",
518+
"comment": null,
519+
"created": "2022-04-29T23:21:15.290486282Z",
520+
"variant": null,
521+
"layer_id": "8a63761caf6d45e65b8e6cdc2e0c03c55625fd142ec3356b80a9ea4a34b11b66",
522+
"created_by": "/bin/sh -c #(nop) ADD file:37744639836b248c88f6e126619829290b45c233309538310e8fffb82e98eaf8 in / ",
523+
"file_count": 6,
524+
"os_version": null,
525+
"architecture": null,
526+
"docker_version": null,
527+
"is_empty_layer": false
515528
}
516529
}
517530
},

scanpipe/tests/data/docker/gcr_io_distroless_base_scan_codebase.json

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,20 @@
579579
"is_key_file": false,
580580
"extra_data": {
581581
"layer": {
582-
"created_by": "bazel build ..."
582+
"os": null,
583+
"author": "Bazel",
584+
"labels": [],
585+
"sha256": "cb3279093e638ddfd56bff4d3d89c5a3ed6dd59dbcfbc2f3107045635996b822",
586+
"comment": null,
587+
"created": "1970-01-01T00:00:00Z",
588+
"variant": null,
589+
"layer_id": "cb3279093e638ddfd56bff4d3d89c5a3ed6dd59dbcfbc2f3107045635996b822",
590+
"created_by": "bazel build ...",
591+
"file_count": 458,
592+
"os_version": null,
593+
"architecture": null,
594+
"docker_version": null,
595+
"is_empty_layer": false
583596
}
584597
}
585598
},
@@ -15709,7 +15722,20 @@
1570915722
"is_key_file": false,
1571015723
"extra_data": {
1571115724
"layer": {
15712-
"created_by": "bazel build ..."
15725+
"os": null,
15726+
"author": "Bazel",
15727+
"labels": [],
15728+
"sha256": "d92879194ba1c23b840306b007bce6568f71f0e954d63625d48504d533749e30",
15729+
"comment": null,
15730+
"created": "1970-01-01T00:00:00Z",
15731+
"variant": null,
15732+
"layer_id": "d92879194ba1c23b840306b007bce6568f71f0e954d63625d48504d533749e30",
15733+
"created_by": "bazel build ...",
15734+
"file_count": 1848,
15735+
"os_version": null,
15736+
"architecture": null,
15737+
"docker_version": null,
15738+
"is_empty_layer": false
1571315739
}
1571415740
}
1571515741
},

scanpipe/tests/data/image-with-symlinks/minitag.tar-expected-scan.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,20 @@
160160
"is_key_file": false,
161161
"extra_data": {
162162
"layer": {
163-
"created_by": "/bin/sh -c #(nop) ADD file:783bda715f24a7fcabfe87ca07ae47e5cca3d35b99dd78e3155748e41477acb2 in / "
163+
"os": null,
164+
"author": null,
165+
"labels": [],
166+
"sha256": "887ac3b73f9a48d1324380c8d1ef033873a6cb882a5a9170fba51fa69fd5e5f0",
167+
"comment": null,
168+
"created": "2022-07-30T14:18:12.008793231Z",
169+
"variant": null,
170+
"layer_id": "887ac3b73f9a48d1324380c8d1ef033873a6cb882a5a9170fba51fa69fd5e5f0",
171+
"created_by": "/bin/sh -c #(nop) ADD file:783bda715f24a7fcabfe87ca07ae47e5cca3d35b99dd78e3155748e41477acb2 in / ",
172+
"file_count": 8,
173+
"os_version": null,
174+
"architecture": null,
175+
"docker_version": null,
176+
"is_empty_layer": false
164177
}
165178
}
166179
},

0 commit comments

Comments
 (0)