use json.unmarshal for unmarshalling PostgresStatus
This commit is contained in:
		
							parent
							
								
									15b087ea65
								
							
						
					
					
						commit
						487c16a30e
					
				|  | @ -8,6 +8,7 @@ import ( | |||
| ) | ||||
| 
 | ||||
| type postgresqlCopy Postgresql | ||||
| type postgresStatusCopy PostgresStatus | ||||
| 
 | ||||
| // MarshalJSON converts a maintenance window definition to JSON.
 | ||||
| func (m *MaintenanceWindow) MarshalJSON() ([]byte, error) { | ||||
|  | @ -71,25 +72,20 @@ func (m *MaintenanceWindow) UnmarshalJSON(data []byte) error { | |||
| 
 | ||||
| // UnmarshalJSON converts a JSON to the status subresource definition.
 | ||||
| func (ps *PostgresStatus) UnmarshalJSON(data []byte) error { | ||||
| 	var got PostgresStatus | ||||
| 	var ( | ||||
| 		tmp    postgresStatusCopy | ||||
| 		status string | ||||
| 	) | ||||
| 
 | ||||
| 	str := string(data) | ||||
| 	str = strings.Replace(str, "{", "", -1) | ||||
| 	str = strings.Replace(str, "}", "", -1) | ||||
| 	str = strings.Replace(str, "\"", "", -1) | ||||
| 	parts := strings.Split(str, ":") | ||||
| 
 | ||||
| 	if len(parts) == 2 || len(parts) == 3 { | ||||
| 		if parts[1] != "" { | ||||
| 			got.PostgresClusterStatus = parts[len(parts)-1] | ||||
| 		} else { | ||||
| 			got.PostgresClusterStatus = ClusterStatusUnknown | ||||
| 	err := json.Unmarshal(data, &tmp) | ||||
| 	if err != nil { | ||||
| 		metaErr := json.Unmarshal(data, &status) | ||||
| 		if metaErr != nil { | ||||
| 			return fmt.Errorf("Could not parse status: %v; err %v", string(data), metaErr) | ||||
| 		} | ||||
| 	} else { | ||||
| 		return fmt.Errorf("incorrect status field of CR") | ||||
| 		tmp.PostgresClusterStatus = status | ||||
| 	} | ||||
| 
 | ||||
| 	*ps = got | ||||
| 	*ps = PostgresStatus(tmp) | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
|  |  | |||
|  | @ -116,15 +116,13 @@ var postgresStatus = []struct { | |||
| 	out PostgresStatus | ||||
| 	err error | ||||
| }{ | ||||
| 	{[]byte(`"status":"Running"`), | ||||
| 	{[]byte(`{"PostgresClusterStatus":"Running"}`), | ||||
| 		PostgresStatus{PostgresClusterStatus: ClusterStatusRunning}, nil}, | ||||
| 	{[]byte(`"status":{"PostgresClusterStatus":"Running"}`), | ||||
| 	{[]byte(`{"PostgresClusterStatus":""}`), | ||||
| 		PostgresStatus{PostgresClusterStatus: ClusterStatusUnknown}, nil}, | ||||
| 	{[]byte(`"Running"`), | ||||
| 		PostgresStatus{PostgresClusterStatus: ClusterStatusRunning}, nil}, | ||||
| 	{[]byte(`"status":""`), | ||||
| 		PostgresStatus{PostgresClusterStatus: ClusterStatusUnknown}, nil}, | ||||
| 	{[]byte(`"status":{}`), | ||||
| 		PostgresStatus{PostgresClusterStatus: ClusterStatusUnknown}, nil}, | ||||
| 	{[]byte(`"status":`), | ||||
| 	{[]byte(`""`), | ||||
| 		PostgresStatus{PostgresClusterStatus: ClusterStatusUnknown}, nil}} | ||||
| 
 | ||||
| var unmarshalCluster = []struct { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue