@@ -208,30 +208,40 @@ func runcVersion() dockercompat.ComponentVersion {
208
208
logrus .Warnf ("unable to determine runc version: %s" , err .Error ())
209
209
return dockercompat.ComponentVersion {Name : "runc" }
210
210
}
211
+ v , err := parseRuncVersion (stdout )
212
+ if err != nil {
213
+ logrus .Warn (err )
214
+ return dockercompat.ComponentVersion {Name : "runc" }
215
+ }
216
+ return * v
217
+ }
211
218
212
- var versionList = strings .Split (strings .TrimSpace (string (stdout )), "\n " )
219
+ func parseRuncVersion (runcVersionStdout []byte ) (* dockercompat.ComponentVersion , error ) {
220
+ var versionList = strings .Split (strings .TrimSpace (string (runcVersionStdout )), "\n " )
213
221
firstLine := strings .Fields (versionList [0 ])
214
- if len (firstLine ) != 3 {
215
- logrus .Errorf ("unable to determine runc version, got: %s" , firstLine )
216
- return dockercompat.ComponentVersion {Name : "runc" }
222
+ if len (firstLine ) != 3 || firstLine [0 ] != "runc" {
223
+ return nil , fmt .Errorf ("unable to determine runc version, got: %s" , string (runcVersionStdout ))
217
224
}
218
225
version := firstLine [2 ]
219
226
220
227
details := map [string ]string {}
221
228
for _ , detailsLine := range versionList [1 :] {
222
- detail := strings .Split (detailsLine , ": " )
229
+ detail := strings .SplitN (detailsLine , ":" , 2 )
223
230
if len (detail ) != 2 {
224
231
logrus .Warnf ("unable to determine one of runc details, got: %s, %d" , detail , len (detail ))
225
232
continue
226
233
}
227
- details [detail [0 ]] = detail [1 ]
234
+ switch strings .TrimSpace (detail [0 ]) {
235
+ case "commit" :
236
+ details ["GitCommit" ] = strings .TrimSpace (detail [1 ])
237
+ }
228
238
}
229
239
230
- return dockercompat.ComponentVersion {
240
+ return & dockercompat.ComponentVersion {
231
241
Name : "runc" ,
232
242
Version : version ,
233
243
Details : details ,
234
- }
244
+ }, nil
235
245
}
236
246
237
247
//BlockIOWeight return whether Block IO weight is supported or not
0 commit comments