package main import ( "fmt" "math" // "log" // "strings" // "encoding/json" // "github.com/UpCloudLtd/upcloud-go-api/upcloud" "github.com/UpCloudLtd/upcloud-go-api/upcloud/service" // "github.com/UpCloudLtd/upcloud-go-api/upcloud/request" // "gocloud.dev/server" // "gocloud.dev/server" // "github.com/davecgh/go-spew/spew" ) func dataPriceResource(s *service.Service, dataprices DataPrices, zone string, target string) (*Price,error) { resource_price := &Price{} resource_zone := PricesZone{} for _,price_zone := range dataprices.Prices.Zone { if price_zone.Name == zone { resource_zone = price_zone break } } if resource_zone.Name == zone { switch target { case "firewall": resource_price = &resource_zone.Firewall case "io_request_backup": resource_price = &resource_zone.IORequestBackup case "io_request_maxiops": resource_price = &resource_zone.IORequestMaxIOPS case "ipv4_address": resource_price = &resource_zone.IPv4Address case "ipv6_address": resource_price = &resource_zone.IPv6Address case "managed_database_1x1xCPU-2GB-25GB": resource_price = &resource_zone.ManagedDatabase1x1CPU2GB25GB case "managed_database_1x2xCPU-4GB-100GB": resource_price = &resource_zone.ManagedDatabase1x2CPU4GB100GB case "managed_database_1x2xCPU-4GB-50GB": resource_price = &resource_zone.ManagedDatabase1x2CPU4GB50GB case "managed_database_2x2xCPU-4GB-100GB": resource_price = &resource_zone.ManagedDatabase2x2CPU4GB100GB case "managed_database_2x2xCPU-4GB-50GB": resource_price = &resource_zone.ManagedDatabase2x2CPU4GB50GB case "managed_database_2x4xCPU-8GB-100GB": resource_price = &resource_zone.ManagedDatabase2x4CPU8GB100GB case "managed_database_2x4xCPU-8GB-50GB": resource_price = &resource_zone.ManagedDatabase2x4CPU8GB50GB case "managed_database_2x6xCPU-16GB-100GB": resource_price = &resource_zone.ManagedDatabase2x6CPU16GB100GB case "managed_database_2x6xCPU-16GB-250GB": resource_price = &resource_zone.ManagedDatabase2x6CPU16GB50GB case "managed_database_2x8xCPU-32GB-100GB": resource_price = &resource_zone.ManagedDatabase2x8CPU32GB100GB case "managed_database_2x8xCPU-32GB-250GB": resource_price = &resource_zone.ManagedDatabase2x8CPU22GB250GB case "managed_database_3x2xCPU-4GB-100GB": resource_price = &resource_zone.ManagedDatabase3x2CPU4GB100GB case "managed_database_3x2xCPU-4GB-200GB": resource_price = &resource_zone.ManagedDatabase3x2CPU4GB200GB case "managed_database_3x4xCPU-8GB-100GB": resource_price = &resource_zone.ManagedDatabase3x4CPU8GB100GB case "managed_database_3x4xCPU-8GB-200GB": resource_price = &resource_zone.ManagedDatabase3x4CPU8GB200GB case "managed_database_3x6xCPU-16GB-200GB": resource_price = &resource_zone.ManagedDatabase3x6CPU16GB200GB case "managed_database_3x6xCPU-16GB-500GB": resource_price = &resource_zone.ManagedDatabase3x6CPU16GB500GB case "managed_database_3x8xCPU-32GB-200GB": resource_price = &resource_zone.ManagedDatabase3x8CPU32GB200GB case "managed_database_3x8xCPU-32GB-500GB": resource_price = &resource_zone.ManagedDatabase3x8CPU32GB500GB case "network_private_vlan": resource_price = &resource_zone.NetworkPrivateVLAN case "object_storage_1TB": resource_price = &resource_zone.ObjectStorage1TB case "object_storage_250GB": resource_price = &resource_zone.ObjectStorage250GB case "object_storage_500GB": resource_price = &resource_zone.ObjectStorage500GB case "public_ipv4_bandwidth_in": resource_price = &resource_zone.PublicIPv4BandwidthIn case "public_ipv4_bandwidth_out": resource_price = &resource_zone.PublicIPv4BandwidthOut case "public_ipv6_bandwidth_in": resource_price = &resource_zone.PublicIPv6BandwidthIn case "public_ipv6_bandwidth_out": resource_price = &resource_zone.PublicIPv6BandwidthOut case "server_core": resource_price = &resource_zone.ServerCore case "server_memory": resource_price = &resource_zone.ServerMemory case "server_plan_6xCPU-8GB": resource_price = &resource_zone.ServerPlan6xCPU8GB case "server_plan_12xCPU-48GB": resource_price = &resource_zone.ServerPlan12xCPU48GB case "server_plan_16xCPU-64GB": resource_price = &resource_zone.ServerPlan16xCPU64GB case "server_plan_1xCPU-1GB": resource_price = &resource_zone.ServerPlan1xCPU1GB case "server_plan_1xCPU-2GB": resource_price = &resource_zone.ServerPlan1xCPU2GB case "server_plan_20xCPU-128GB": resource_price = &resource_zone.ServerPlan20xCPU128GB case "server_plan_20xCPU-96GB": resource_price = &resource_zone.ServerPlan20xCPU96GB case "server_plan_2xCPU-4GB": resource_price = &resource_zone.ServerPlan2xCPU4GB case "server_plan_4xCPU-8GB": resource_price = &resource_zone.ServerPlan4xCPU8GB case "server_plan_6xCPU-16GB": resource_price = &resource_zone.ServerPlan6xCPU16GB case "server_plan_8xCPU-32GB": resource_price = &resource_zone.ServerPlan8xCPU32GB case "simple_backup_dailies_12xCPU-48GB": resource_price = &resource_zone.SimpleBackupDailies12xCPU48GB case "simple_backup_dailies_16xCPU-64GB": resource_price = &resource_zone.SimpleBackupDailies16xCPU64GB case "simple_backup_dailies_1xCPU-1GB": resource_price = &resource_zone.SimpleBackupDailiesx1CPU1GB case "simple_backup_dailies_1xCPU-2GB": resource_price = &resource_zone.SimpleBackupDailies1xCPU2GB case "simple_backup_dailies_20xCPU-128GB": resource_price = &resource_zone.SimpleBackupDailies20xCPU128GB case "simple_backup_dailies_20xCPU-96GB": resource_price = &resource_zone.SimpleBackupDailies20xCPU96GB case "simple_backup_dailies_2xCPU-4GB": resource_price = &resource_zone.SimpleBackupDailies2xCPU4GB case "simple_backup_dailies_4xCPU-8GB": resource_price = &resource_zone.SimpleBackupDailies4xCPU8GB case "simple_backup_dailies_6xCPU-16GB": resource_price = &resource_zone.SimpleBackupDailies6xCPU16GB case "simple_backup_dailies_8xCPU-32GB": resource_price = &resource_zone.SimpleBackupDailies8xCPU32GB case "simple_backup_extra_dailies": resource_price = &resource_zone.SimpleBackupExtraDailies case "simple_backup_extra_monthlies": resource_price = &resource_zone.SimpleBackupExtraMontlies case "simple_backup_extra_weeklies": resource_price = &resource_zone.SimpleBackupExtraWeeklies case "simple_backup_monthlies_12xCPU-48GB": resource_price = &resource_zone.SimpleBackupMonthlies12xCPU48GB case "simple_backup_monthlies_16xCPU-64GB": resource_price = &resource_zone.SimpleBackupMonthlies16xCPU64GB case "simple_backup_monthlies_1xCPU-1GB": resource_price = &resource_zone.SimpleBackupMonthlies1xCPU1GB case "simple_backup_monthlies_1xCPU-2GB": resource_price = &resource_zone.SimpleBackupMonthlies1xCPU2GB case "simple_backup_monthlies_20xCPU-128GB": resource_price = &resource_zone.SimpleBackupMonthlies20xCPU128GB case "simple_backup_monthlies_20xCPU-96GB": resource_price = &resource_zone.SimpleBackupMonthlies20xCPU96GB case "simple_backup_monthlies_2xCPU-4GB": resource_price = &resource_zone.SimpleBackupMonthlies2xCPU4GB case "simple_backup_monthlies_4xCPU-8GB": resource_price = &resource_zone.SimpleBackupMonthlies4xCPU8GB case "simple_backup_monthlies_6xCPU-16GB": resource_price = &resource_zone.SimpleBackupMonthlies6xCPU16GB case "simple_backup_monthlies_8xCPU-32GB": resource_price = &resource_zone.SimpleBackupMonthlies8xCPU32GB case "simple_backup_weeklies_12xCPU-48GB": resource_price = &resource_zone.SimpleBackupWeeklies12xCPU48GB case "simple_backup_weeklies_16xCPU-64GB": resource_price = &resource_zone.SimpleBackupWeeklies16xCPU64GB case "simple_backup_weeklies_1xCPU-1GB": resource_price = &resource_zone.SimpleBackupWeeklies1xCPU1GB case "simple_backup_weeklies_1xCPU-2GB": resource_price = &resource_zone.SimpleBackupWeeklies1xCPU2GB case "simple_backup_weeklies_20xCPU-128GB": resource_price = &resource_zone.SimpleBackupWeeklies20xCPU128GB case "simple_backup_weeklies_20xCPU-96GB": resource_price = &resource_zone.SimpleBackupWeeklies20xCPU96GB case "simple_backup_weeklies_2xCPU-4GB": resource_price = &resource_zone.SimpleBackupWeeklies2xCPU4GB case "simple_backup_weeklies_4xCPU-8GB": resource_price = &resource_zone.SimpleBackupWeeklies4xCPU8GB case "simple_backup_weeklies_6xCPU-16GB": resource_price = &resource_zone.SimpleBackupWeeklies6xCPU16GB case "simple_backup_weeklies_8xCPU-32GB": resource_price = &resource_zone.SimpleBackupWeeklies8xCPU32GB case "storage_hdd": resource_price = &resource_zone.StorageHDD case "storage_backup": resource_price = &resource_zone.StorageBackup case "storage_maxiops": resource_price = &resource_zone.StorageMaxIOPS case "storage_template": resource_price = &resource_zone.StorageTemplate default: //fmt.Fprintf(os.Stderr, "Resource price %s in %s NOT FOUND",target,zone) return resource_price, fmt.Errorf("Resource price %s in %s NOT FOUND",target,zone) } resource_price.Hour = (resource_price.Price / 100) // resource_price.Month = (resource_price.Hour * MONTH_HOURS) resource_price.Month = math.Round(resource_price.Hour * MONTH_HOURS) // fmt.Printf("Resource %s price in %s: %#v\n", target, zone, resource_price) // fmt.Printf("Resource %s price in %s: %d %.4f\n", target, zone, resource_price.Amount, resource_price.Price) } // enc := json.NewEncoder(os.Stdout) // enc.Encode(resource_price) return resource_price, nil } /* // UpCloud API is incomplete to make this work // priceZones := upcloud.PriceZones{} func upcloud_priceResource(s *service.Service, zone string, target string) (upcloud.Price,error) { pricesZones,err:= s.GetPriceZones() resource_price := new(upcloud.Price) if err != nil { fmt.Fprintf(os.Stderr, "Unable to get prices zones: %#v\n", err) return *resource_price,err } resource_zone := upcloud.PriceZone{} for _,price_zone := range pricesZones.PriceZones { if price_zone.Name == zone { resource_zone = price_zone break } } if resource_zone.Name == zone { switch target { case "firewall": resource_price = resource_zone.Firewall case "io_request_backup": resource_price = resource_zone.IORequestBackup case "io_request_maxiops": resource_price = resource_zone.IORequestMaxIOPS case "ipv4_address": resource_price = resource_zone.IPv4Address case "ipv6_address": resource_price = resource_zone.IPv6Address case "public_ipv4_bandwidth_in": resource_price = resource_zone.PublicIPv4BandwidthIn case "public_ipv4_bandwidth_out": resource_price = resource_zone.PublicIPv4BandwidthOut case "public_ipv6_bandwidth_in": resource_price = resource_zone.PublicIPv6BandwidthIn case "public_ipv6_bandwidth_out": resource_price = resource_zone.PublicIPv6BandwidthOut case "server_core": resource_price = resource_zone.ServerCore case "server_memory": resource_price = resource_zone.ServerMemory case "server_plan_1xCPU-1GB": resource_price = resource_zone.ServerPlan1xCPU1GB case "server_plan_2xCPU-2GB": resource_price = resource_zone.ServerPlan2xCPU2GB case "server_plan_2xCPU-4GB": resource_price.Price = 2.9761 case "server_plan_4xCPU-4GB": resource_price = resource_zone.ServerPlan4xCPU4GB case "server_plan_6xCPU-8GB": resource_price = resource_zone.ServerPlan6xCPU8GB case "storage_backup": resource_price = resource_zone.StorageBackup case "storage_maxiops": resource_price = resource_zone.StorageMaxIOPS case "storage_template": resource_price = resource_zone.StorageTemplate default: //fmt.Fprintf(os.Stderr, "Resource price %s in %s NOT FOUND",target,zone) return *resource_price, fmt.Errorf("Resource price %s in %s NOT FOUND",target,zone) } // fmt.Printf("Resource %s price in %s: %#v\n", target, zone, resource_price) // fmt.Printf("Resource %s price in %s: %d %.4f\n", target, zone, resource_price.Amount, resource_price.Price) } // enc := json.NewEncoder(os.Stdout) // enc.Encode(resource_price) return *resource_price, nil } */