Files
infra-provisioner/types.go

97 lines
3.8 KiB
Go
Raw Normal View History

2020-01-13 18:49:36 +05:30
package main
const DeploymentNameSuffix = "navi-service"
type Deployment struct {
Name string `json:"name" valid:"required"`
NameSuffix string
}
2020-01-13 18:49:36 +05:30
type Manifest struct {
Environment string `json:"environment"`
2020-06-15 13:55:00 +05:30
ExtraResources *ExtraResources `json:"extraResources" valid:"required"`
Team *Team `json:"team"`
Deployment *Deployment `json:"deployment"`
StateStoreBackend *StateStoreBackend
2020-01-13 18:49:36 +05:30
}
type ExtraResources struct {
//TODO: Remove environment from ExtraResources once all apps have migrated to new schema
Environment string `json:"environment"`
Workspace string `json:"workspace"`
Database *Database `json:"database"`
ServiceRole *ServiceRole `json:"aws_access"`
S3Buckets []S3Bucket `json:"s3_buckets"`
2020-01-13 18:49:36 +05:30
}
//We provide defaults in respective terraforms instead of here to keep all values at one place
type Database struct {
AwsInstanceClass string `json:"awsInstanceClass"`
PsqlFamily string `json:"psqlFamily"`
PsqlEngineVersion string `json:"psqlEngineVersion"`
User string `json:"user" valid:"required"`
Password string `json:"password" valid:"required"`
SizeInGb int `json:"sizeInGb"`
DbNames []string `json:"dbNames"`
InstanceName string `json:"instanceName" valid:"required"`
BackupDisabled bool `json:"backupDisabled"`
MultiAZDisabled bool `json:"multiAZDisabled"`
ApplyImmediately bool `json:"applyImmediately"`
DbExtensions []string `json:"dbExtensions"`
MonitoringUser string `env:"MONITORING_USER"`
MonitoringPassword string `env:"MONITORING_PASSWORD"`
ReadonlyUser string `json:"readonlyUser"`
ReadonlyPassword string `json:"readonlyPassword"`
PerformanceInsightsEnabled bool `json:"performanceInsightsEnabled"`
ReadReplica *ReadReplica `json:"readReplica"`
RdsAlertThresholds *RdsAlertThresholds `json:"rdsAlertThresholds"`
Parameters map[string]string `json:"parameters"`
2020-01-13 18:49:36 +05:30
}
type Team struct {
Name string `json:"name"`
}
2020-02-26 17:17:59 +05:30
type Policies struct {
Actions []string `json:"actions"`
Resource string `json:"resource" valid:"required,matches((^arn.*)|(^\\*$))~Policy resource must be an aws arn or *"`
}
type ServiceRole struct {
Policies []Policies `json:"policies"`
RoleName string `json:"roleName"`
}
type StateStoreBackend struct {
BucketName string
AWSProfile string
}
type S3Bucket struct {
BucketName string `json:"anonymizedBucketName" valid:"required"`
BucketTag string `json:"bucketTag" valid:"required"`
LifecycleRules []map[string]LifecycleRule `json:"lifecycleRules"`
}
type RdsAlertThresholds struct {
CpuUtilization int `json:"cpuUtilization"`
CpuCreditBalance int `json:"cpuCreditBalance"`
BurstBalance int `json:"burstBalance"`
DBConnections int `json:"dbConnections"`
QueueDepth int `json:"queueDepth"`
FreeStorageSpacePercent int `json:"freeStorageSpacePercent"`
FreeMemoryTooLowInMB int `json:"freeMemoryTooLowInMB"`
ReadLatency float64 `json:"readLatency"`
WriteLatency float64 `json:"writeLatency"`
}
type LifecycleRule struct {
2020-06-29 11:30:18 +05:30
Days int `json:"days"`
StorageClass string `json:"storageClass"`
2020-04-06 11:47:06 +05:30
}
type ReadReplica struct {
2020-06-29 11:30:18 +05:30
AwsInstanceClass string `json:"awsInstanceClass" valid:"required"`
PerformanceInsightsEnabled bool `json:"performanceInsightsEnabled"`
}