5757class Section (NamedTuple ):
5858 reboot_required : Optional [bool ]
5959 packages : int = - 1
60+ locked_packages_list : Optional [str ] = None
6061 security_packages : int = - 1
6162 security_packages_list : Optional [str ] = None
6263 last_update_timestamp : int = - 1
@@ -75,11 +76,14 @@ def yum_parse(string_table: List[List[str]]) -> Section:
7576 pass
7677
7778 packages = None
79+ locked_packages_list = None
7880 security_packages = None
7981 security_packages_list = None
8082 last_update_timestamp = None
8183 try :
8284 packages = int (string_table [1 ][0 ])
85+ if len (string_table [1 ]) > 1 :
86+ locked_packages_list = " " .join (string_table [1 ][1 :])
8387 security_packages = int (string_table [2 ][0 ])
8488 if len (string_table [2 ]) > 1 :
8589 security_packages_list = string_table [2 ][1 ]
@@ -90,6 +94,7 @@ def yum_parse(string_table: List[List[str]]) -> Section:
9094 return Section (
9195 reboot_required ,
9296 packages ,
97+ locked_packages_list ,
9398 security_packages ,
9499 security_packages_list ,
95100 last_update_timestamp )
@@ -118,9 +123,17 @@ def check_yum(params: Dict[str, object], section: Section):
118123
119124 # === Normal Updates ===
120125 if section .packages < 0 :
121- yield Result (state = State .UNKNOWN , summary = "No package information available" )
126+ state = State .UNKNOWN
127+ if section .locked_packages_list :
128+ summary = f"No package information available ({ section .locked_packages_list } )"
129+ else :
130+ summary = "No package information available"
122131 elif section .packages == 0 and section .security_packages == 0 :
123- yield Result (state = State .OK , summary = "All packages are up to date" )
132+ state = State .OK
133+ if section .locked_packages_list :
134+ summary = f"All packages are up to date ({ section .locked_packages_list } )"
135+ else :
136+ summary = "All packages are up to date"
124137 yield Metric (name = "normal_updates" , value = 0 )
125138 else :
126139 mode , levels = params .get ("normal" )
@@ -134,8 +147,12 @@ def check_yum(params: Dict[str, object], section: Section):
134147 state = State .OK
135148 else :
136149 state = State .OK
137- yield Result (state = state , summary = f"{ section .packages } normal updates available" )
150+ if section .locked_packages_list :
151+ summary = f"{ section .packages } normal updates available ({ section .locked_packages_list } )"
152+ else :
153+ summary = f"{ section .packages } normal updates available"
138154 yield Metric (name = "normal_updates" , value = section .packages )
155+ yield Result (state = state , summary = summary )
139156
140157 # === Security Updates ===
141158 if section .security_packages >= 0 :
0 commit comments