56
56
--dockerfile)
57
57
--dockerfile DOCKERFILE
58
58
Use Dockerfile to determine base image/layers (can't be used with --grouping or ---base-image)
59
+ --project-name Specify project name (default is container image spec)
60
+ --project-verson Specify project version (default is container image tag/version)
59
61
60
62
'''
61
63
@@ -190,6 +192,8 @@ def __init__(self, hub, container_image_name, workdir='/tmp/workdir', grouping=N
190
192
self .base_image = base_image
191
193
self .dockerfile = dockerfile
192
194
self .base_layers = None
195
+ self .project_name = self .image_name
196
+ self .project_version = self .image_version
193
197
print ("<--{}-->" .format (self .grouping ))
194
198
195
199
def prepare_container_image (self ):
@@ -220,12 +224,12 @@ def process_container_image_by_user_defined_groups(self):
220
224
layer ['group_name' ] = "undefined"
221
225
else :
222
226
layer ['group_name' ] = self .groups .get (str (intlist [key_number ]))
223
- layer ['project_version' ] = "{}_{}" .format (self .image_version ,layer ['group_name' ])
224
- layer ['name' ] = "{}_{}_{}_layer_{}" .format (self .image_name ,self .image_version ,layer ['group_name' ],str (num ))
227
+ layer ['project_version' ] = "{}_{}" .format (self .project_version ,layer ['group_name' ])
228
+ layer ['name' ] = "{}_{}_{}_layer_{}" .format (self .project_name ,self .project_version ,layer ['group_name' ],str (num ))
225
229
else :
226
- layer ['project_version' ] = self .image_version
227
- layer ['name' ] = self .image_name + "_" + self .image_version + "_layer_" + str (num )
228
- layer ['project_name' ] = self .image_name
230
+ layer ['project_version' ] = self .project_version
231
+ layer ['name' ] = self .project_name + "_" + self .project_version + "_layer_" + str (num )
232
+ layer ['project_name' ] = self .project_name
229
233
layer ['path' ] = i
230
234
while self .config ['history' ][num + offset - 1 ].get ('empty_layer' , False ):
231
235
offset = offset + 1
@@ -246,7 +250,7 @@ def process_container_image_by_base_image_info(self):
246
250
offset = 0
247
251
for i in self .manifest [0 ]['Layers' ]:
248
252
layer = {}
249
- layer ['project_name' ] = self .image_name
253
+ layer ['project_name' ] = self .project_name
250
254
layer ['path' ] = i
251
255
while self .config ['history' ][num + offset - 1 ].get ('empty_layer' , False ):
252
256
offset = offset + 1
@@ -256,14 +260,14 @@ def process_container_image_by_base_image_info(self):
256
260
if self .base_layers :
257
261
pass
258
262
if layer ['shaid' ] in self .base_layers :
259
- layer ['project_version' ] = "{}_{}" .format (self .image_version ,'base' )
260
- layer ['name' ] = "{}_{}_{}_layer_{}" .format (self .image_name ,self .image_version ,'base' ,str (num ))
263
+ layer ['project_version' ] = "{}_{}" .format (self .project_version ,'base' )
264
+ layer ['name' ] = "{}_{}_{}_layer_{}" .format (self .project_name ,self .project_version ,'base' ,str (num ))
261
265
else :
262
- layer ['project_version' ] = "{}_{}" .format (self .image_version ,'addon' )
263
- layer ['name' ] = "{}_{}_{}_layer_{}" .format (self .image_name ,self .image_version ,'addon' ,str (num ))
266
+ layer ['project_version' ] = "{}_{}" .format (self .project_version ,'addon' )
267
+ layer ['name' ] = "{}_{}_{}_layer_{}" .format (self .project_name ,self .project_version ,'addon' ,str (num ))
264
268
else :
265
- layer ['project_version' ] = self .image_version
266
- layer ['name' ] = self .image_name + "_" + self .image_version + "_layer_" + str (num )
269
+ layer ['project_version' ] = self .project_version
270
+ layer ['name' ] = self .project_name + "_" + self .project_version + "_layer_" + str (num )
267
271
self .layers .append (layer )
268
272
num = num + 1
269
273
print (json .dumps (self .layers , indent = 4 ))
@@ -320,12 +324,19 @@ def get_base_layers(self):
320
324
return base_layers
321
325
322
326
323
- def scan_container_image (imagespec , grouping = None , base_image = None , dockerfile = None ):
327
+ def scan_container_image (imagespec , grouping = None , base_image = None , dockerfile = None , project_name = None , project_version = None ):
324
328
325
329
hub = HubInstance ()
326
330
scanner = ContainerImageScanner (hub , imagespec , grouping = grouping , base_image = base_image , dockerfile = dockerfile )
331
+ if project_name :
332
+ scanner .project_name = project_name
333
+ if project_version :
334
+ scanner .project_version = project_version
327
335
if not grouping :
328
- scanner .base_layers = scanner .get_base_layers ()
336
+ if not base_image and not dockerfile :
337
+ scanner .grouping = '1024:everything'
338
+ else :
339
+ scanner .base_layers = scanner .get_base_layers ()
329
340
scanner .prepare_container_image ()
330
341
scanner .process_container_image ()
331
342
scanner .submit_layer_scans ()
@@ -342,6 +353,8 @@ def main(argv=None):
342
353
parser .add_argument ('--grouping' ,default = None , type = str , help = "Group layers into user defined provect versions (can't be used with --base-image)" )
343
354
parser .add_argument ('--base-image' ,default = None , type = str , help = "Use base image spec to determine base image/layers (can't be used with --grouping or --dockerfile)" )
344
355
parser .add_argument ('--dockerfile' ,default = None , type = str , help = "Use Dockerfile to determine base image/layers (can't be used with --grouping or ---base-image)" )
356
+ parser .add_argument ('--project-name' ,default = None , type = str , help = "Specify project name (default is container image spec)" )
357
+ parser .add_argument ('--project-version' ,default = None , type = str , help = "Specify project version (default is container image tag/version)" )
345
358
346
359
args = parser .parse_args ()
347
360
@@ -359,7 +372,7 @@ def main(argv=None):
359
372
parser .print_help (sys .stdout )
360
373
sys .exit (1 )
361
374
362
- scan_container_image (args .imagespec , args .grouping , args .base_image , args .dockerfile )
375
+ scan_container_image (args .imagespec , args .grouping , args .base_image , args .dockerfile , args . project_name , args . project_version )
363
376
364
377
365
378
if __name__ == "__main__" :
0 commit comments