object.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package grapher
  2. // Object contains information about each k8s component in the chart.
  3. type Object struct {
  4. ID int
  5. Kind string
  6. Name string
  7. Namespace string
  8. RawYAML map[string]interface{}
  9. Relations Relations
  10. }
  11. // ParseObjs parses a k8s object from a single-document yaml
  12. // and returns an array of objects that includes its children.
  13. func ParseObjs(objs []map[string]interface{}) []Object {
  14. objArr := []Object{}
  15. for i, obj := range objs {
  16. kind := getField(obj, "kind")
  17. // ignore block comments
  18. if kind == nil {
  19. continue
  20. }
  21. name := getField(obj, "metadata", "name")
  22. namespace := getField(obj, "metadata", "namespace")
  23. if namespace == nil {
  24. namespace = "default"
  25. }
  26. if name == nil {
  27. name = ""
  28. }
  29. // First add the object that appears on the YAML
  30. parsedObj := Object{
  31. ID: i,
  32. Kind: kind.(string),
  33. Name: name.(string),
  34. Namespace: namespace.(string),
  35. RawYAML: obj,
  36. Relations: Relations{
  37. ControlRels: []ControlRel{},
  38. LabelRels: []LabelRel{},
  39. SpecRels: []SpecRel{},
  40. },
  41. }
  42. objArr = append(objArr, parsedObj)
  43. }
  44. return objArr
  45. }