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