MCPcopy
hub / github.com/zegl/kube-score / decodeItem

Method decodeItem

parser/parse.go:253–439  ·  view source on GitHub ↗
(s *parsedObjects, detectedVersion schema.GroupVersionKind, fileName string, fileOffset int, fileContents []byte)

Source from the content-addressed store, hash-verified

251}
252
253func (p *Parser) decodeItem(s *parsedObjects, detectedVersion schema.GroupVersionKind, fileName string, fileOffset int, fileContents []byte) error {
254 addPodSpeccer := func(ps ks.PodSpecer) {
255 s.podspecers = append(s.podspecers, ps)
256 s.bothMetas = append(s.bothMetas, ks.BothMeta{
257 TypeMeta: ps.GetTypeMeta(),
258 ObjectMeta: ps.GetObjectMeta(),
259 FileLocationer: ps,
260 })
261 }
262
263 fileLocation := detectFileLocation(fileName, fileOffset, fileContents)
264
265 var errs parseErrors
266
267 switch detectedVersion {
268 case corev1.SchemeGroupVersion.WithKind("Pod"):
269 var pod corev1.Pod
270 errs.AddIfErr(p.decode(fileContents, &pod))
271 p := internalpod.Pod{Obj: pod, Location: fileLocation}
272 s.pods = append(s.pods, p)
273 s.bothMetas = append(s.bothMetas, ks.BothMeta{TypeMeta: pod.TypeMeta, ObjectMeta: pod.ObjectMeta, FileLocationer: p})
274
275 case batchv1.SchemeGroupVersion.WithKind("Job"):
276 var job batchv1.Job
277 errs.AddIfErr(p.decode(fileContents, &job))
278 addPodSpeccer(internal.Batchv1Job{Job: job, Location: fileLocation})
279
280 case batchv1beta1.SchemeGroupVersion.WithKind("CronJob"):
281 var cronjob batchv1beta1.CronJob
282 errs.AddIfErr(p.decode(fileContents, &cronjob))
283 cjob := internalcronjob.CronJobV1beta1{Obj: cronjob, Location: fileLocation}
284 addPodSpeccer(cjob)
285 s.cronjobs = append(s.cronjobs, cjob)
286
287 case batchv1.SchemeGroupVersion.WithKind("CronJob"):
288 var cronjob batchv1.CronJob
289 errs.AddIfErr(p.decode(fileContents, &cronjob))
290 cjob := internalcronjob.CronJobV1{Obj: cronjob, Location: fileLocation}
291 addPodSpeccer(cjob)
292 s.cronjobs = append(s.cronjobs, cjob)
293
294 case appsv1.SchemeGroupVersion.WithKind("Deployment"):
295 var deployment appsv1.Deployment
296 errs.AddIfErr(p.decode(fileContents, &deployment))
297 deploy := internal.Appsv1Deployment{Obj: deployment, Location: fileLocation}
298 addPodSpeccer(deploy)
299
300 // TODO: Support older versions of Deployment as well?
301 s.deployments = append(s.deployments, deploy)
302 case appsv1beta1.SchemeGroupVersion.WithKind("Deployment"):
303 var deployment appsv1beta1.Deployment
304 errs.AddIfErr(p.decode(fileContents, &deployment))
305 addPodSpeccer(internal.Appsv1beta1Deployment{Deployment: deployment, Location: fileLocation})
306 case appsv1beta2.SchemeGroupVersion.WithKind("Deployment"):
307 var deployment appsv1beta2.Deployment
308 errs.AddIfErr(p.decode(fileContents, &deployment))
309 addPodSpeccer(internal.Appsv1beta2Deployment{Deployment: deployment, Location: fileLocation})
310 case extensionsv1beta1.SchemeGroupVersion.WithKind("Deployment"):

Callers 1

detectAndDecodeMethod · 0.95

Calls 7

AddIfErrMethod · 0.95
decodeMethod · 0.95
AnyMethod · 0.95
detectFileLocationFunction · 0.85
GetTypeMetaMethod · 0.65
GetObjectMetaMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected