Skip to content

Commit f0287b2

Browse files
committed
added project name and version as optional parameters
1 parent fa13872 commit f0287b2

File tree

1 file changed

+28
-15
lines changed

1 file changed

+28
-15
lines changed

examples/scan_docker_image_lite.py

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@
5656
--dockerfile)
5757
--dockerfile DOCKERFILE
5858
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)
5961
6062
'''
6163

@@ -190,6 +192,8 @@ def __init__(self, hub, container_image_name, workdir='/tmp/workdir', grouping=N
190192
self.base_image = base_image
191193
self.dockerfile = dockerfile
192194
self.base_layers = None
195+
self.project_name = self.image_name
196+
self.project_version = self.image_version
193197
print ("<--{}-->".format(self.grouping))
194198

195199
def prepare_container_image(self):
@@ -220,12 +224,12 @@ def process_container_image_by_user_defined_groups(self):
220224
layer['group_name'] = "undefined"
221225
else:
222226
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))
225229
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
229233
layer['path'] = i
230234
while self.config['history'][num + offset -1].get('empty_layer', False):
231235
offset = offset + 1
@@ -246,7 +250,7 @@ def process_container_image_by_base_image_info(self):
246250
offset = 0
247251
for i in self.manifest[0]['Layers']:
248252
layer = {}
249-
layer['project_name'] = self.image_name
253+
layer['project_name'] = self.project_name
250254
layer['path'] = i
251255
while self.config['history'][num + offset -1].get('empty_layer', False):
252256
offset = offset + 1
@@ -256,14 +260,14 @@ def process_container_image_by_base_image_info(self):
256260
if self.base_layers:
257261
pass
258262
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))
261265
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))
264268
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)
267271
self.layers.append(layer)
268272
num = num + 1
269273
print (json.dumps(self.layers, indent=4))
@@ -320,12 +324,19 @@ def get_base_layers(self):
320324
return base_layers
321325

322326

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):
324328

325329
hub = HubInstance()
326330
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
327335
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()
329340
scanner.prepare_container_image()
330341
scanner.process_container_image()
331342
scanner.submit_layer_scans()
@@ -342,6 +353,8 @@ def main(argv=None):
342353
parser.add_argument('--grouping',default=None, type=str, help="Group layers into user defined provect versions (can't be used with --base-image)")
343354
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)")
344355
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)")
345358

346359
args = parser.parse_args()
347360

@@ -359,7 +372,7 @@ def main(argv=None):
359372
parser.print_help(sys.stdout)
360373
sys.exit(1)
361374

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)
363376

364377

365378
if __name__ == "__main__":

0 commit comments

Comments
 (0)