Skip to content

Commit b8e7837

Browse files
committed
Show package type in default report
This commit adds package type/format information to the default report. This is a useful datapoint as it corresponds to the package manager in base.yml that was used to inventory the layer. Sometimes there may be two collection methods used per layer and it will be helpful to differentiate between the two by noting the package format. Resolves #984 Signed-off-by: Rose Judge <[email protected]>
1 parent e62a6c1 commit b8e7837

File tree

6 files changed

+17
-6
lines changed

6 files changed

+17
-6
lines changed

tern/analyze/default/bundle.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,13 @@ def convert_to_pkg_dicts(attr_lists):
6767
return pkg_list
6868

6969

70-
def fill_pkg_results(image_layer, pkg_list_dict):
70+
def fill_pkg_results(image_layer, pkg_list_dict, pkg_format):
7171
"""Fill results from collecting package information into the image layer
7272
object"""
7373
if 'names' in pkg_list_dict and len(pkg_list_dict['names']) > 1:
7474
pkg_list = convert_to_pkg_dicts(pkg_list_dict)
7575
for pkg_dict in pkg_list:
7676
pkg = Package(pkg_dict['name'])
7777
pkg.fill(pkg_dict)
78+
pkg.pkg_format = pkg_format
7879
image_layer.add_package(pkg)

tern/analyze/default/core.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ def execute_base(layer_obj, prereqs):
7878
if warnings:
7979
logger.warning("Some metadata may be missing")
8080
# bundle the results into Package objects
81-
bundle.fill_pkg_results(layer_obj, pkg_dict)
81+
bundle.fill_pkg_results(layer_obj, pkg_dict, listing.get("pkg_format"))
8282
# remove extra FileData objects from the layer
8383
com.remove_duplicate_layer_files(layer_obj)
8484
# if there is no listing add a notice

tern/analyze/default/live/run.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def fill_packages(layer, prereqs):
8484
"metadata.")
8585
if warnings:
8686
logger.warning("Some metadata may be missing.")
87-
bundle.fill_pkg_results(layer, pkg_dict)
87+
bundle.fill_pkg_results(layer, pkg_dict, listing.get("pkg_format"))
8888
com.remove_duplicate_layer_files(layer)
8989

9090

tern/classes/package.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def __init__(self, name):
4242
self.__origins = Origins()
4343
self.__files = []
4444
self.__pkg_licenses = []
45+
self.__pkg_format = ''
4546

4647
@property
4748
def name(self):
@@ -115,6 +116,14 @@ def checksum(self):
115116
def checksum(self, checksum):
116117
self.__checksum = checksum
117118

119+
@property
120+
def pkg_format(self):
121+
return self.__pkg_format
122+
123+
@pkg_format.setter
124+
def pkg_format(self, pkg_format):
125+
self.__pkg_format = pkg_format
126+
118127
def get_file_paths(self):
119128
"""Return a list of paths of all the files in a package"""
120129
return [f.path for f in self.__files]

tern/formats/default/generator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def get_layer_info_list(layer):
101101
layer_file_licenses_list = []
102102
file_level_licenses = None
103103
package_list = PrettyTable()
104-
package_list.field_names = ["Package", "Version", "License"]
104+
package_list.field_names = ["Package", "Version", "License", "Pkg Format"]
105105
package_list.align = "l"
106106
package_list.print_empty = False
107107

@@ -114,7 +114,7 @@ def get_layer_info_list(layer):
114114

115115
for package in layer.packages:
116116
package_list.add_row([package.name, package.version,
117-
package.pkg_license])
117+
package.pkg_license, package.pkg_format])
118118

119119
return file_level_licenses, package_list.get_string()
120120

tests/test_class_package.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,8 @@ def testFill(self):
160160
'checksum': 'abcxyz',
161161
'pkg_licenses': ['MIT', 'GPL'],
162162
'files': [{'name': 'a.txt', 'path': '/usr/a.txt'},
163-
{'name': 'b.txt', 'path': '/lib/b.txt'}]}
163+
{'name': 'b.txt', 'path': '/lib/b.txt'}],
164+
'pkg_format': 'rpm'}
164165
p = Package('p1')
165166
p.fill(p_dict)
166167
self.assertEqual(p.name, 'p1')

0 commit comments

Comments
 (0)