func()

in providers/gcp/gke.go [113:153]


func (g *GkeGenerator) PostConvertHook() error {
	for i, r := range g.Resources {
		if r.InstanceInfo.Type != "google_container_node_pool" {
			continue
		}
		if _, existNodeConfig := g.Resources[i].Item["node_config"]; existNodeConfig {
			if _, existMetadata := g.Resources[i].Item["node_config"].([]interface{})[0].(map[string]interface{})["metadata"]; existMetadata {
				for k, v := range g.Resources[i].Item["node_config"].([]interface{})[0].(map[string]interface{})["metadata"].(map[string]interface{}) {
					switch x := v.(type) {
					case bool:
						g.Resources[i].Item["node_config"].([]interface{})[0].(map[string]interface{})["metadata"].(map[string]interface{})[k] = strconv.FormatBool(x)
					default:
					}
				}
			}
		}
		for _, cluster := range g.Resources {
			if cluster.InstanceState.Attributes["name"] == r.InstanceState.Attributes["cluster"] {
				g.Resources[i].Item["cluster"] = "${google_container_cluster." + cluster.ResourceName + ".name}"
			}
		}
	}

	// hacks for fix GCP API<=>provider<=>parser inconsistency
	for i, r := range g.Resources {
		if r.InstanceInfo.Type != "google_container_cluster" {
			continue
		}
		if r.Item["master_authorized_networks_config"] != nil {
			if len(r.Item["master_authorized_networks_config"].([]interface{})) == 0 {
				g.Resources[i].Item["master_authorized_networks_config"] = map[string]interface{}{}
			}
		}
		if r.Item["ip_allocation_policy"] != nil {
			if len(r.Item["ip_allocation_policy"].([]interface{})) == 0 {
				g.Resources[i].Item["ip_allocation_policy"] = map[string]interface{}{}
			}
		}
	}
	return nil
}