Documentation
¶
Index ¶
- func SaveExampleConfig(path string) error
- type Calculator
- func (c *Calculator) CalculateInstanceCost(instanceType string, listPricePerHour float64, region string) *InstanceCostResult
- func (c *Calculator) CalculateStorageCost(storageType string, sizeGB int, pricePerGBMonth float64, region string) *InstanceCostResult
- func (c *Calculator) GetPricingInfo() map[string]interface{}
- func (c *Calculator) GetSpotInstanceDiscount() float64
- type DiscountApplied
- type InstanceCostResult
- type InstitutionalPricingConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func SaveExampleConfig ¶
SaveExampleConfig saves an example institutional pricing configuration
Types ¶
type Calculator ¶
type Calculator struct {
// contains filtered or unexported fields
}
Calculator applies institutional pricing discounts to AWS list prices
func NewCalculator ¶
func NewCalculator(config *InstitutionalPricingConfig) *Calculator
NewCalculator creates a new pricing calculator with institutional discounts
func (*Calculator) CalculateInstanceCost ¶
func (c *Calculator) CalculateInstanceCost(instanceType string, listPricePerHour float64, region string) *InstanceCostResult
CalculateInstanceCost calculates the discounted cost for an EC2 instance
func (*Calculator) CalculateStorageCost ¶
func (c *Calculator) CalculateStorageCost(storageType string, sizeGB int, pricePerGBMonth float64, region string) *InstanceCostResult
CalculateStorageCost calculates discounted storage costs
func (*Calculator) GetPricingInfo ¶
func (c *Calculator) GetPricingInfo() map[string]interface{}
GetPricingInfo returns detailed pricing information for display
func (*Calculator) GetSpotInstanceDiscount ¶
func (c *Calculator) GetSpotInstanceDiscount() float64
GetSpotInstanceDiscount returns the effective spot instance discount
type DiscountApplied ¶
type DiscountApplied struct {
Type string `json:"type"` // Type of discount (e.g., "global_ec2", "instance_family")
Description string `json:"description"` // Human-readable description
Percentage float64 `json:"percentage"` // Discount percentage
Savings float64 `json:"savings"` // Absolute savings per hour
}
DiscountApplied represents a specific discount that was applied
type InstanceCostResult ¶
type InstanceCostResult struct {
ListPrice float64 `json:"list_price"` // AWS list price per hour
DiscountedPrice float64 `json:"discounted_price"` // Price after discounts
TotalDiscount float64 `json:"total_discount"` // Total discount percentage
DailyEstimate float64 `json:"daily_estimate"` // Estimated daily cost
MonthlyEstimate float64 `json:"monthly_estimate"` // Estimated monthly cost
AppliedDiscounts []DiscountApplied `json:"applied_discounts"` // List of applied discounts
}
InstanceCostResult represents the result of instance cost calculation
type InstitutionalPricingConfig ¶
type InstitutionalPricingConfig struct {
// Metadata
Institution string `json:"institution"`
CreatedAt time.Time `json:"created_at"`
ValidUntil time.Time `json:"valid_until,omitempty"`
Version string `json:"version"`
Contact string `json:"contact,omitempty"` // Contact for pricing questions
// Global Discounts (applied to all services)
GlobalDiscounts struct {
EC2Discount float64 `json:"ec2_discount"` // Percentage discount (0.0-1.0)
EBSDiscount float64 `json:"ebs_discount"` // EBS storage discount
EFSDiscount float64 `json:"efs_discount"` // EFS storage discount
DataTransfer float64 `json:"data_transfer"` // Data transfer discount
GeneralDiscount float64 `json:"general_discount"` // Catch-all discount
} `json:"global_discounts"`
// Instance Family Specific Discounts
InstanceFamilyDiscounts map[string]float64 `json:"instance_family_discounts"` // family -> discount
// Commitment-Based Discounts
CommitmentPrograms struct {
ReservedInstanceCoverage float64 `json:"reserved_instance_coverage"` // Percentage of usage covered
SavingsPlanCoverage float64 `json:"savings_plan_coverage"` // Additional coverage
SpotInstancePreference float64 `json:"spot_instance_preference"` // Preferred spot usage %
} `json:"commitment_programs"`
// Program-Specific Discounts
Programs struct {
EducationalDiscount float64 `json:"educational_discount"` // Academic institution discount
StartupCredits float64 `json:"startup_credits"` // AWS Activate credits
ResearchCredits float64 `json:"research_credits"` // AWS research credit program
NonProfitDiscount float64 `json:"nonprofit_discount"` // Non-profit organization discount
} `json:"programs"`
// Enterprise Agreements
Enterprise struct {
EDPDiscount float64 `json:"edp_discount"` // Enterprise Discount Program
VolumeDiscount float64 `json:"volume_discount"` // Volume-based discount tiers
CommittedSpend float64 `json:"committed_spend"` // Annual committed spend
CustomNegotiated float64 `json:"custom_negotiated"` // Custom negotiated rates
} `json:"enterprise"`
// Regional Variations
RegionalDiscounts map[string]struct {
AdditionalDiscount float64 `json:"additional_discount"` // Additional regional discount
CreditMultiplier float64 `json:"credit_multiplier"` // Credit value multiplier
} `json:"regional_discounts,omitempty"`
// Budget and Cost Management
CostManagement struct {
BudgetAlerts bool `json:"budget_alerts"` // Enable budget alerts
CostOptimization bool `json:"cost_optimization"` // Enable cost optimization suggestions
SpendingLimit float64 `json:"spending_limit"` // Monthly spending limit
} `json:"cost_management"`
}
InstitutionalPricingConfig represents pricing discounts provided by an institution This file can be distributed by institutions to their researchers for accurate cost estimation
func DefaultPricingConfig ¶
func DefaultPricingConfig() *InstitutionalPricingConfig
DefaultPricingConfig returns the default pricing configuration (no discounts)
func LoadInstitutionalPricing ¶
func LoadInstitutionalPricing() (*InstitutionalPricingConfig, error)
LoadInstitutionalPricing loads institutional pricing configuration Checks multiple locations in order of preference: 1. --pricing-config flag or PRICING_CONFIG env var 2. ~/.prism/institutional_pricing.json 3. ./institutional_pricing.json (current directory) 4. Returns default config (no discounts) if none found