func()

in src/terraform/providers/terraform-provider-avere/averevfxt.go [2048:2091]


func (a *AvereVfxt) GetCoreFilerSpacePercentage() (map[string]float32, error) {
	jsonData, err := a.AvereCommand(a.getAnalyticsCoreFilerSpaceCommand())
	if err != nil {
		return nil, err
	}

	var outputParts [][]interface{}
	if err := json.Unmarshal([]byte(jsonData), &outputParts); err != nil {
		return nil, err
	}

	if len(outputParts) <= 1 && len(outputParts[1]) < 1 {
		return nil, fmt.Errorf("json did not parse correctly and is less than two parts: '%v'", jsonData)
	}

	analytics := (outputParts[1][0]).(map[string]interface{})

	rawFreeSpace, ok := analytics[AnalyticsClusterFilersRaw]
	if !ok {
		return nil, fmt.Errorf("key %s not found in analytics", AnalyticsClusterFilersRaw)
	}

	rawJson, err := json.Marshal(rawFreeSpace)
	if err != nil {
		return nil, err
	}

	var freeSpaceMap map[string]ClusterFilersRaw
	if err := json.Unmarshal(rawJson, &freeSpaceMap); err != nil {
		return nil, err
	}

	var totalSpace float32
	for _, v := range freeSpaceMap {
		totalSpace += float32(v.AvailableForReads)
	}

	result := make(map[string]float32)
	for k, v := range freeSpaceMap {
		result[k] = float32(v.AvailableForReads) / totalSpace
	}

	return result, nil
}