package config

// Context is the global configuration context
var Context Config

// This is for shoot infra configuration
func initInfraContext() {
	infraCfg := Global().InfraConfig
	Context.proxyImage = infraCfg.ProxyImage
	Context.reporterImage = infraCfg.ReporterImage
	Context.sliReporterImage = infraCfg.SLIReporterImage
	Context.sqsEndpoint = infraCfg.SQSEndpoint
	Context.sliSqsEndpoint = infraCfg.SLISQSEndpoint
	Context.region = infraCfg.Region
	Context.identityImage = infraCfg.IdentityImage
	Context.certManagerRepository = infraCfg.CertManagerRepository
	Context.configServiceURL = infraCfg.ConfigServiceURL
}

type Config struct {
	proxyImage       string
	reporterImage    string
	sliReporterImage string
	identityImage    string
	sqsEndpoint      string
	sliSqsEndpoint   string
	region           string
	configServiceURL string

	certManagerRepository string
}

func (c Config) ProxyImage() string {
	return c.proxyImage
}

func (c Config) ReporterImage() string {
	return c.reporterImage
}

func (c Config) SLIReporterImage() string {
	return c.sliReporterImage
}

func (c Config) SqsEndpoint() string {
	return c.sqsEndpoint
}

func (c Config) SLISqsEndpoint() string {
	return c.sliSqsEndpoint
}

func (c Config) Region() string {
	return c.region
}

func (c Config) IdentityImage() string {
	return c.identityImage
}

func (c Config) CertManagerRepository() string {
	return c.certManagerRepository
}

func (c Config) ConfigServiceURL() string {
	return c.configServiceURL
}
