func FillAvereVfxtFromBackupFile()

in src/terraform/providers/terraform-provider-avere/restore_backup.go [538:586]


func FillAvereVfxtFromBackupFile(lines []string) (AvereVfxt, error) {
	avereVfxt := AvereVfxt{
		EnableSupportUploads: false, // customer always chooses to enable support uploads
		NodeCount:            3,
		NodeCacheSize:        4096,
	}

	isClusterModify := false
	clusterModifyStr := ""
	for _, line := range lines {

		// handle averecmd cluster.modify
		if strings.Index(line, "averecmd cluster.modify") >= 0 {
			isClusterModify = true
		}
		if isClusterModify {
			openIndex := strings.Index(line, "\"{")
			closeIndex := strings.Index(line, "}\"")
			if openIndex > 0 && closeIndex > 0 {
				clusterModifyStr = line[openIndex+1 : closeIndex+1]
				isClusterModify = false
			} else if openIndex > 0 {
				clusterModifyStr = line[openIndex+1:]
			} else if closeIndex > 0 {
				clusterModifyStr += line[:closeIndex+1]
				isClusterModify = false
			} else {
				clusterModifyStr += line
			}
			if isClusterModify == false {
				var cluster Cluster
				if err := json.Unmarshal([]byte(strings.ReplaceAll(clusterModifyStr, "'", "\"")), &cluster); err != nil {
					return avereVfxt, fmt.Errorf("unable to parse json string")
				}
				avereVfxt.AvereVfxtName = cluster.ClusterName
				avereVfxt.NtpServers = cluster.NtpServers
				avereVfxt.Timezone = cluster.Timezone
				avereVfxt.DnsServer = cluster.DnsServer
				avereVfxt.DnsDomain = cluster.DnsDomain
				avereVfxt.DnsSearch = cluster.DnsSearch
				if len(cluster.Proxy) > 0 {
					avereVfxt.ProxyUri = cluster.Proxy
					avereVfxt.ClusterProxyUri = cluster.Proxy
				}
			}
		}
	}
	return avereVfxt, nil
}