(key string, objects ...map[string]interface{})
| 106 | } |
| 107 | |
| 108 | func (e *StructuredEntry) populateMetadata(key string, objects ...map[string]interface{}) { |
| 109 | for _, obj := range objects { |
| 110 | if obj == nil { |
| 111 | continue |
| 112 | } |
| 113 | if e.APIVersion == "" { |
| 114 | if v, ok := obj["apiVersion"].(string); ok { |
| 115 | e.APIVersion = v |
| 116 | } |
| 117 | } |
| 118 | if e.Kind == "" { |
| 119 | if v, ok := obj["kind"].(string); ok { |
| 120 | e.Kind = v |
| 121 | } |
| 122 | } |
| 123 | if meta, ok := obj["metadata"].(map[string]interface{}); ok { |
| 124 | if e.Name == "" { |
| 125 | if v, ok := meta["name"].(string); ok { |
| 126 | e.Name = v |
| 127 | } |
| 128 | } |
| 129 | if e.Namespace == "" { |
| 130 | if v, ok := meta["namespace"].(string); ok { |
| 131 | e.Namespace = v |
| 132 | } |
| 133 | } |
| 134 | } |
| 135 | } |
| 136 | |
| 137 | if e.Kind == "" || e.Name == "" || e.Namespace == "" || e.APIVersion == "" { |
| 138 | templateData := ReportTemplateSpec{} |
| 139 | if err := templateData.loadFromKey(key); err == nil { |
| 140 | if e.Kind == "" { |
| 141 | e.Kind = templateData.Kind |
| 142 | } |
| 143 | if e.Name == "" { |
| 144 | e.Name = templateData.Name |
| 145 | } |
| 146 | if e.Namespace == "" { |
| 147 | e.Namespace = templateData.Namespace |
| 148 | } |
| 149 | if e.APIVersion == "" { |
| 150 | e.APIVersion = templateData.API |
| 151 | } |
| 152 | } |
| 153 | } |
| 154 | } |
| 155 | |
| 156 | func calculateFieldChanges(oldJSON, newJSON []byte) ([]FieldChange, error) { |
| 157 | patchBytes, err := jsonpatch.CreateMergePatch(oldJSON, newJSON) |
no test coverage detected