in calculator/calculator.go [196:261]
func (service *PricingService) GetGCEMachinePrice(instanceType string, spot bool) (float64, error) {
instanceInfo := strings.Split(instanceType, "-")
cpus, _ := strconv.Atoi(instanceInfo[2])
ram := 0.0
classType := instanceInfo[1]
machineType := instanceInfo[0]
switch classType {
case "standard":
ram = float64(cpus) * 4
case "highcpu":
ram = float64(cpus) * 2
case "highmem":
ram = float64(cpus) * 4
case "highgpu":
ram = float64(cpus) * 7.0833
case "ultragpu":
ram = float64(cpus) * 14.1666
}
ram = math.Ceil(ram)
fmt.Printf("Parsing %s - %d %f %s %s", instanceType, cpus, ram, machineType, classType)
if spot {
switch machineType {
case "a2":
return service.GCEPricing.SpotA2CpuPrice*float64(cpus) + service.GCEPricing.SpotA2MemoryPrice*ram, nil
case "a3":
return service.GCEPricing.SpotA3CpuPrice*float64(cpus) + service.GCEPricing.SpotA3MemoryPrice*ram, nil
case "g2":
return service.GCEPricing.SpotG2DCpuPrice*float64(cpus) + service.GCEPricing.SpotG2DMemoryPrice*ram, nil
case "h3":
fmt.Printf("H3 Machine type is not available in Preemptible Spot format. Defaulting to a regular price.")
return service.GCEPricing.H3CpuPrice*float64(cpus) + service.GCEPricing.H3MemoryPrice*ram, nil
case "c2":
return service.GCEPricing.SpotC2CpuPrice*float64(cpus) + service.GCEPricing.SpotC2MemoryPrice*ram, nil
case "c2d":
return service.GCEPricing.SpotC2DCpuPrice*float64(cpus) + service.GCEPricing.SpotC2DMemoryPrice*ram, nil
default:
fmt.Printf("GCE Machine type %s is not implemented for price querying. Only supported ones are A2, A3, G2, H3, C2 and C2D", instanceType)
}
return 0, nil
}
fmt.Printf("%#v", service.GCEPricing)
switch machineType {
case "a2":
return service.GCEPricing.A2CpuPrice*float64(cpus) + service.GCEPricing.A2MemoryPrice*ram, nil
case "a3":
return service.GCEPricing.A3CpuPrice*float64(cpus) + service.GCEPricing.A3MemoryPrice*ram, nil
case "g2":
return service.GCEPricing.G2CpuPrice*float64(cpus) + service.GCEPricing.G2MemoryPrice*ram, nil
case "h3":
return service.GCEPricing.H3CpuPrice*float64(cpus) + service.GCEPricing.H3MemoryPrice*ram, nil
case "c2":
return service.GCEPricing.C2CpuPrice*float64(cpus) + service.GCEPricing.C2MemoryPrice*ram, nil
case "c2d":
return service.GCEPricing.C2DCpuPrice*float64(cpus) + service.GCEPricing.C2DMemoryPrice*ram, nil
default:
fmt.Printf("GCE Machine type %s is not implemented for price querying. Only supported ones are A2, A3, G2, H3, C2 and C2D", instanceType)
}
return 0, nil
}