@@ -46,6 +46,10 @@ const (
4646 defaultMode AuthMode = "SCRAM-SHA-256"
4747)
4848
49+ const (
50+ defaultClusterDomain = "cluster.local"
51+ )
52+
4953// MongoDBCommunitySpec defines the desired state of MongoDB
5054type MongoDBCommunitySpec struct {
5155 // Members is the number of members in the replica set
@@ -498,32 +502,36 @@ func (m MongoDBCommunity) AutomationConfigMembersThisReconciliation() int {
498502}
499503
500504// MongoURI returns a mongo uri which can be used to connect to this deployment
501- func (m MongoDBCommunity ) MongoURI () string {
502- return fmt .Sprintf ("mongodb://%s" , strings .Join (m .Hosts (), "," ))
505+ func (m MongoDBCommunity ) MongoURI (clusterDomain string ) string {
506+ return fmt .Sprintf ("mongodb://%s" , strings .Join (m .Hosts (clusterDomain ), "," ))
503507}
504508
505509// MongoSRVURI returns a mongo srv uri which can be used to connect to this deployment
506- func (m MongoDBCommunity ) MongoSRVURI () string {
507- clusterDomain := "svc.cluster.local" // TODO: make this configurable
508- return fmt .Sprintf ("mongodb+srv://%s.%s.%s" , m .ServiceName (), m .Namespace , clusterDomain )
510+ func (m MongoDBCommunity ) MongoSRVURI (clusterDomain string ) string {
511+ if clusterDomain == "" {
512+ clusterDomain = defaultClusterDomain
513+ }
514+ return fmt .Sprintf ("mongodb+srv://%s.%s.svc.%s" , m .ServiceName (), m .Namespace , clusterDomain )
509515}
510516
511517// MongoAuthUserURI returns a mongo uri which can be used to connect to this deployment
512518// and includes the authentication data for the user
513- func (m MongoDBCommunity ) MongoAuthUserURI (user scram.User , password string ) string {
519+ func (m MongoDBCommunity ) MongoAuthUserURI (user scram.User , password string , clusterDomain string ) string {
514520 return fmt .Sprintf ("mongodb://%s:%s@%s/%s?ssl=%t" ,
515521 url .QueryEscape (user .Username ),
516522 url .QueryEscape (password ),
517- strings .Join (m .Hosts (), "," ),
523+ strings .Join (m .Hosts (clusterDomain ), "," ),
518524 user .Database ,
519525 m .Spec .Security .TLS .Enabled )
520526}
521527
522528// MongoAuthUserSRVURI returns a mongo srv uri which can be used to connect to this deployment
523529// and includes the authentication data for the user
524- func (m MongoDBCommunity ) MongoAuthUserSRVURI (user scram.User , password string ) string {
525- clusterDomain := "svc.cluster.local" // TODO: make this configurable
526- return fmt .Sprintf ("mongodb+srv://%s:%s@%s.%s.%s/%s?ssl=%t" ,
530+ func (m MongoDBCommunity ) MongoAuthUserSRVURI (user scram.User , password string , clusterDomain string ) string {
531+ if clusterDomain == "" {
532+ clusterDomain = defaultClusterDomain
533+ }
534+ return fmt .Sprintf ("mongodb+srv://%s:%s@%s.%s.svc.%s/%s?ssl=%t" ,
527535 url .QueryEscape (user .Username ),
528536 url .QueryEscape (password ),
529537 m .ServiceName (),
@@ -533,11 +541,15 @@ func (m MongoDBCommunity) MongoAuthUserSRVURI(user scram.User, password string)
533541 m .Spec .Security .TLS .Enabled )
534542}
535543
536- func (m MongoDBCommunity ) Hosts () []string {
544+ func (m MongoDBCommunity ) Hosts (clusterDomain string ) []string {
537545 hosts := make ([]string , m .Spec .Members )
538- clusterDomain := "svc.cluster.local" // TODO: make this configurable
546+
547+ if clusterDomain == "" {
548+ clusterDomain = defaultClusterDomain
549+ }
550+
539551 for i := 0 ; i < m .Spec .Members ; i ++ {
540- hosts [i ] = fmt .Sprintf ("%s-%d.%s.%s.%s:%d" , m .Name , i , m .ServiceName (), m .Namespace , clusterDomain , 27017 )
552+ hosts [i ] = fmt .Sprintf ("%s-%d.%s.%s.svc. %s:%d" , m .Name , i , m .ServiceName (), m .Namespace , clusterDomain , 27017 )
541553 }
542554 return hosts
543555}
0 commit comments