Help us shape the future of Go! Take the 2026 Go Developer Survey

pricing

package
v0.17.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SaveExampleConfig

func SaveExampleConfig(path string) error

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL