object.go 1004 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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").(string)
  17. name := getField(obj, "metadata", "name").(string)
  18. namespace := getField(obj, "metadata", "namespace")
  19. if namespace == nil {
  20. namespace = ""
  21. }
  22. // First add the object that appears on the YAML
  23. parsedObj := Object{
  24. ID: i,
  25. Kind: kind,
  26. Name: name,
  27. Namespace: namespace.(string),
  28. RawYAML: obj,
  29. Relations: Relations{
  30. ControlRels: []ControlRel{},
  31. LabelRels: []LabelRel{},
  32. },
  33. }
  34. objArr = append(objArr, parsedObj)
  35. }
  36. return objArr
  37. }