@@ -60,6 +60,14 @@ import (
6060 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
6161)
6262
63+ // getOrDefault - helper for setting 'default' value if empty value in CR.
64+ func getOrDefault (source string , def string ) string {
65+ if len (source ) == 0 {
66+ return def
67+ }
68+ return source
69+ }
70+
6371// GetClient -
6472func (r * DesignateReconciler ) GetClient () client.Client {
6573 return r .Client
@@ -1527,6 +1535,14 @@ func (r *DesignateReconciler) transportURLCreateOrUpdate(
15271535 return transportURL , op , err
15281536}
15291537
1538+ // copyDesignateTemplateItems - copy elements from the central Spec to the sub-spec template.
1539+ func copyDesignateTemplateItems (src * designatev1beta1.DesignateSpecBase , dest * designatev1beta1.DesignateTemplate ) {
1540+ dest .ServiceUser = getOrDefault (src .ServiceUser , "designate" )
1541+ dest .DatabaseAccount = getOrDefault (src .DatabaseAccount , "designate" )
1542+ dest .Secret = src .Secret
1543+ dest .PasswordSelectors .Service = getOrDefault (src .PasswordSelectors .Service , "DesignatePassword" )
1544+ }
1545+
15301546func (r * DesignateReconciler ) apiDeploymentCreateOrUpdate (ctx context.Context , instance * designatev1beta1.Designate ) (* designatev1beta1.DesignateAPI , controllerutil.OperationResult , error ) {
15311547 deployment := & designatev1beta1.DesignateAPI {
15321548 ObjectMeta : metav1.ObjectMeta {
@@ -1549,10 +1565,8 @@ func (r *DesignateReconciler) apiDeploymentCreateOrUpdate(ctx context.Context, i
15491565 deployment .Spec = instance .Spec .DesignateAPI
15501566 // Add in transfers from umbrella Designate (this instance) spec
15511567 // TODO: Add logic to determine when to set/overwrite, etc
1552- deployment .Spec .ServiceUser = instance .Spec .ServiceUser
1568+ copyDesignateTemplateItems ( & instance .Spec .DesignateSpecBase , & deployment .Spec .DesignateTemplate )
15531569 deployment .Spec .DatabaseHostname = instance .Status .DatabaseHostname
1554- deployment .Spec .DatabaseAccount = instance .Spec .DatabaseAccount
1555- deployment .Spec .Secret = instance .Spec .Secret
15561570 deployment .Spec .ServiceAccount = instance .RbacResourceName ()
15571571 deployment .Spec .TLS = instance .Spec .DesignateAPI .TLS
15581572 deployment .Spec .TransportURLSecret = instance .Status .TransportURLSecret
@@ -1593,10 +1607,8 @@ func (r *DesignateReconciler) centralDeploymentCreateOrUpdate(ctx context.Contex
15931607 deployment .Spec = instance .Spec .DesignateCentral
15941608 // Add in transfers from umbrella Designate CR (this instance) spec
15951609 // TODO: Add logic to determine when to set/overwrite, etc
1596- deployment .Spec .ServiceUser = instance .Spec .ServiceUser
1610+ copyDesignateTemplateItems ( & instance .Spec .DesignateSpecBase , & deployment .Spec .DesignateTemplate )
15971611 deployment .Spec .DatabaseHostname = instance .Status .DatabaseHostname
1598- deployment .Spec .DatabaseAccount = instance .Spec .DatabaseAccount
1599- deployment .Spec .Secret = instance .Spec .Secret
16001612 deployment .Spec .TransportURLSecret = instance .Status .TransportURLSecret
16011613 deployment .Spec .ServiceAccount = instance .RbacResourceName ()
16021614 deployment .Spec .RedisHostIPs = instance .Status .RedisHostIPs
@@ -1637,10 +1649,8 @@ func (r *DesignateReconciler) workerDeploymentCreateOrUpdate(ctx context.Context
16371649 deployment .Spec = instance .Spec .DesignateWorker
16381650 // Add in transfers from umbrella Designate CR (this instance) spec
16391651 // TODO: Add logic to determine when to set/overwrite, etc
1640- deployment .Spec .ServiceUser = instance .Spec .ServiceUser
1652+ copyDesignateTemplateItems ( & instance .Spec .DesignateSpecBase , & deployment .Spec .DesignateTemplate )
16411653 deployment .Spec .DatabaseHostname = instance .Status .DatabaseHostname
1642- deployment .Spec .DatabaseAccount = instance .Spec .DatabaseAccount
1643- deployment .Spec .Secret = instance .Spec .Secret
16441654 deployment .Spec .TransportURLSecret = instance .Status .TransportURLSecret
16451655 deployment .Spec .ServiceAccount = instance .RbacResourceName ()
16461656 deployment .Spec .TLS = instance .Spec .DesignateAPI .TLS .Ca
@@ -1681,25 +1691,22 @@ func (r *DesignateReconciler) mdnsStatefulSetCreateOrUpdate(ctx context.Context,
16811691 instance .Spec .DesignateMdns .Replicas = & minReplicas
16821692 }
16831693
1694+ if len (instance .Spec .DesignateMdns .ControlNetworkName ) == 0 {
1695+ instance .Spec .DesignateMdns .ControlNetworkName = getOrDefault (instance .Spec .DesignateNetworkAttachment , "designate" )
1696+ }
1697+
16841698 op , err := controllerutil .CreateOrUpdate (ctx , r .Client , statefulSet , func () error {
16851699 statefulSet .Spec = instance .Spec .DesignateMdns
16861700 // Add in transfers from umbrella Designate CR (this instance) spec
16871701 // TODO: Add logic to determine when to set/overwrite, etc
1688- statefulSet .Spec .ServiceUser = instance .Spec .ServiceUser
1702+ copyDesignateTemplateItems ( & instance .Spec .DesignateSpecBase , & statefulSet .Spec .DesignateTemplate )
16891703 statefulSet .Spec .DatabaseHostname = instance .Status .DatabaseHostname
1690- statefulSet .Spec .DatabaseAccount = instance .Spec .DatabaseAccount
1691- statefulSet .Spec .Secret = instance .Spec .Secret
16921704 statefulSet .Spec .TransportURLSecret = instance .Status .TransportURLSecret
16931705 statefulSet .Spec .ServiceAccount = instance .RbacResourceName ()
16941706 statefulSet .Spec .TLS = instance .Spec .DesignateAPI .TLS .Ca
16951707 statefulSet .Spec .NodeSelector = instance .Spec .DesignateMdns .NodeSelector
16961708 statefulSet .Spec .TopologyRef = instance .Spec .DesignateMdns .TopologyRef
1697-
1698- networkAttachment := "designate"
1699- if instance .Spec .DesignateNetworkAttachment != "" {
1700- networkAttachment = instance .Spec .DesignateNetworkAttachment
1701- }
1702- statefulSet .Spec .ControlNetworkName = networkAttachment
1709+ statefulSet .Spec .ControlNetworkName = instance .Spec .DesignateMdns .ControlNetworkName
17031710
17041711 err := controllerutil .SetControllerReference (instance , statefulSet , r .Scheme )
17051712 if err != nil {
@@ -1734,10 +1741,8 @@ func (r *DesignateReconciler) producerDeploymentCreateOrUpdate(ctx context.Conte
17341741 deployment .Spec = instance .Spec .DesignateProducer
17351742 // Add in transfers from umbrella Designate CR (this instance) spec
17361743 // TODO: Add logic to determine when to set/overwrite, etc
1737- deployment .Spec .ServiceUser = instance .Spec .ServiceUser
1744+ copyDesignateTemplateItems ( & instance .Spec .DesignateSpecBase , & deployment .Spec .DesignateTemplate )
17381745 deployment .Spec .DatabaseHostname = instance .Status .DatabaseHostname
1739- deployment .Spec .DatabaseAccount = instance .Spec .DatabaseAccount
1740- deployment .Spec .Secret = instance .Spec .Secret
17411746 deployment .Spec .TransportURLSecret = instance .Status .TransportURLSecret
17421747 deployment .Spec .ServiceAccount = instance .RbacResourceName ()
17431748 deployment .Spec .RedisHostIPs = instance .Status .RedisHostIPs
@@ -1774,6 +1779,10 @@ func (r *DesignateReconciler) backendbind9StatefulSetCreateOrUpdate(ctx context.
17741779 instance .Spec .DesignateBackendbind9 .TopologyRef = instance .Spec .TopologyRef
17751780 }
17761781
1782+ if len (instance .Spec .DesignateBackendbind9 .ControlNetworkName ) == 0 {
1783+ instance .Spec .DesignateBackendbind9 .ControlNetworkName = getOrDefault (instance .Spec .DesignateNetworkAttachment , "designate" )
1784+ }
1785+
17771786 op , err := controllerutil .CreateOrUpdate (ctx , r .Client , statefulSet , func () error {
17781787 statefulSet .Spec = instance .Spec .DesignateBackendbind9
17791788 // Add in transfers from umbrella Designate CR (this instance) spec
@@ -1784,6 +1793,7 @@ func (r *DesignateReconciler) backendbind9StatefulSetCreateOrUpdate(ctx context.
17841793 statefulSet .Spec .ServiceAccount = instance .RbacResourceName ()
17851794 statefulSet .Spec .NodeSelector = instance .Spec .DesignateBackendbind9 .NodeSelector
17861795 statefulSet .Spec .TopologyRef = instance .Spec .DesignateBackendbind9 .TopologyRef
1796+ statefulSet .Spec .ControlNetworkName = instance .Spec .DesignateBackendbind9 .ControlNetworkName
17871797
17881798 networkAttachment := "designate"
17891799 if instance .Spec .DesignateNetworkAttachment != "" {
0 commit comments