Use named arguments in the DNS name format
This commit is contained in:
parent
3b6454c2dc
commit
95a57d1e4f
|
|
@ -9,7 +9,7 @@ data:
|
||||||
pod_role_label: spilo-role
|
pod_role_label: spilo-role
|
||||||
db_hosted_zone: db.example.com
|
db_hosted_zone: db.example.com
|
||||||
debug_logging: "true"
|
debug_logging: "true"
|
||||||
dns_name_format: '%s.%s.staging.%s'
|
dns_name_format: '{cluster}.{team}.staging.{hostedzone}'
|
||||||
docker_image: registry.opensource.zalan.do/acid/spiloprivate-9.6:1.2-p4
|
docker_image: registry.opensource.zalan.do/acid/spiloprivate-9.6:1.2-p4
|
||||||
etcd_host: etcd-client.default.svc.cluster.local:2379
|
etcd_host: etcd-client.default.svc.cluster.local:2379
|
||||||
infrastructure_roles_secret_name: postgresql-infrastructure-roles
|
infrastructure_roles_secret_name: postgresql-infrastructure-roles
|
||||||
|
|
|
||||||
|
|
@ -245,11 +245,10 @@ func (c *Cluster) labelsSet() labels.Set {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cluster) dnsName() string {
|
func (c *Cluster) dnsName() string {
|
||||||
return strings.ToLower(fmt.Sprintf(
|
return strings.ToLower(c.OpConfig.DNSNameFormat.Format(
|
||||||
c.OpConfig.DNSNameFormat,
|
"cluster", c.Spec.ClusterName,
|
||||||
c.Spec.ClusterName,
|
"team", c.teamName(),
|
||||||
c.teamName(),
|
"hostedzone", c.OpConfig.DbHostedZone))
|
||||||
c.OpConfig.DbHostedZone))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Cluster) credentialSecretName(username string) string {
|
func (c *Cluster) credentialSecretName(username string) string {
|
||||||
|
|
|
||||||
|
|
@ -43,19 +43,19 @@ type Config struct {
|
||||||
TPR
|
TPR
|
||||||
Resources
|
Resources
|
||||||
Auth
|
Auth
|
||||||
Namespace string `name:"namespace"`
|
Namespace string `name:"namespace"`
|
||||||
EtcdHost string `name:"etcd_host" default:"etcd-client.default.svc.cluster.local:2379"`
|
EtcdHost string `name:"etcd_host" default:"etcd-client.default.svc.cluster.local:2379"`
|
||||||
DockerImage string `name:"docker_image" default:"registry.opensource.zalan.do/acid/spiloprivate-9.6:1.2-p4"`
|
DockerImage string `name:"docker_image" default:"registry.opensource.zalan.do/acid/spiloprivate-9.6:1.2-p4"`
|
||||||
ServiceAccountName string `name:"service_account_name" default:"operator"`
|
ServiceAccountName string `name:"service_account_name" default:"operator"`
|
||||||
DbHostedZone string `name:"db_hosted_zone" default:"db.example.com"`
|
DbHostedZone string `name:"db_hosted_zone" default:"db.example.com"`
|
||||||
EtcdScope string `name:"etcd_scope" default:"service"`
|
EtcdScope string `name:"etcd_scope" default:"service"`
|
||||||
WALES3Bucket string `name:"wal_s3_bucket"`
|
WALES3Bucket string `name:"wal_s3_bucket"`
|
||||||
KubeIAMRole string `name:"kube_iam_role"`
|
KubeIAMRole string `name:"kube_iam_role"`
|
||||||
DebugLogging bool `name:"debug_logging" default:"false"`
|
DebugLogging bool `name:"debug_logging" default:"true"`
|
||||||
EnableDBAccess bool `name:"enable_database_access" default:"true"`
|
EnableDBAccess bool `name:"enable_database_access" default:"true"`
|
||||||
EnableTeamsAPI bool `name:"enable_teams_api" default:"true"`
|
EnableTeamsAPI bool `name:"enable_teams_api" default:"true"`
|
||||||
DNSNameFormat string `name:"dns_name_format" default:"%s.%s.%s"`
|
DNSNameFormat stringTemplate `name:"dns_name_format" default:"{cluster}.{team}.{hostedzone}"`
|
||||||
Workers uint32 `name:"workers" default:"4"`
|
Workers uint32 `name:"workers" default:"4"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c Config) MustMarshal() string {
|
func (c Config) MustMarshal() string {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
|
@ -18,6 +19,8 @@ type fieldInfo struct {
|
||||||
Field reflect.Value
|
Field reflect.Value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type stringTemplate string
|
||||||
|
|
||||||
func decoderFrom(field reflect.Value) (d Decoder) {
|
func decoderFrom(field reflect.Value) (d Decoder) {
|
||||||
// it may be impossible for a struct field to fail this check
|
// it may be impossible for a struct field to fail this check
|
||||||
if !field.CanInterface() {
|
if !field.CanInterface() {
|
||||||
|
|
@ -162,3 +165,23 @@ func processField(value string, field reflect.Value) error {
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *stringTemplate) Decode(value string) error {
|
||||||
|
*f = stringTemplate(value)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *stringTemplate) Format(a ...string) string {
|
||||||
|
res := string(*f)
|
||||||
|
|
||||||
|
for i := 0; i < len(a); i += 2 {
|
||||||
|
res = strings.Replace(res, "{"+a[i]+"}", a[i+1], -1)
|
||||||
|
}
|
||||||
|
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f stringTemplate) MarshalJSON() ([]byte, error) {
|
||||||
|
return json.Marshal(string(f))
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue