| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package grapher
- // Object contains information about each k8s component in the chart.
- type Object struct {
- ID int
- Kind string
- Name string
- Namespace string
- RawYAML map[string]interface{}
- Relations Relations
- }
- // ParseObjs parses a k8s object from a single-document yaml
- // and returns an array of objects that includes its children.
- func ParseObjs(objs []map[string]interface{}, releaseNamespace string) []Object {
- objArr := []Object{}
- for i, obj := range objs {
- kind := getField(obj, "kind")
- // ignore block comments
- if kind == nil {
- continue
- }
- name := getField(obj, "metadata", "name")
- namespace := getField(obj, "metadata", "namespace")
- if namespace == nil {
- namespace = releaseNamespace
- }
- if name == nil {
- name = ""
- }
- // First add the object that appears on the YAML
- parsedObj := Object{
- ID: i,
- Kind: kind.(string),
- Name: name.(string),
- Namespace: namespace.(string),
- RawYAML: obj,
- Relations: Relations{
- ControlRels: []ControlRel{},
- LabelRels: []LabelRel{},
- SpecRels: []SpecRel{},
- },
- }
- objArr = append(objArr, parsedObj)
- }
- return objArr
- }
- // ParseControllers parses a k8s object from a single-document yaml
- // and returns an array of controllers.
- func ParseControllers(objs []map[string]interface{}) []Object {
- objArr := []Object{}
- for i, obj := range objs {
- kind := getField(obj, "kind")
- // ignore block comments
- if kind == nil {
- continue
- }
- switch kind.(string) {
- // Parse for all possible controller types
- case "Deployment", "StatefulSet", "ReplicaSet", "DaemonSet", "Job", "CronJob":
- name := getField(obj, "metadata", "name")
- namespace := getField(obj, "metadata", "namespace")
- if namespace == nil {
- namespace = "default"
- }
- if name == nil {
- name = ""
- }
- // First add the object that appears on the YAML
- parsedObj := Object{
- ID: i,
- Kind: kind.(string),
- Name: name.(string),
- Namespace: namespace.(string),
- }
- objArr = append(objArr, parsedObj)
- }
- }
- return objArr
- }
|