@@ -44,12 +44,27 @@ func resourceName(component Component, name string) string {
4444 return name
4545}
4646
47- func objectMeta (component Component , name string ) metaV1.ObjectMeta {
47+ func objectMeta (component Component , name string , cluster * v1alpha1. OxiaCluster ) metaV1.ObjectMeta {
4848 _resourceName := resourceName (component , name )
49- return metaV1.ObjectMeta {
49+ _objectMeta := metaV1.ObjectMeta {
5050 Name : _resourceName ,
5151 Labels : allLabels (component , name ),
5252 }
53+ if cluster != nil {
54+ _objectMeta .OwnerReferences = []metaV1.OwnerReference {* controllerOwnerReference (cluster )}
55+ }
56+ return _objectMeta
57+ }
58+
59+ func controllerOwnerReference (cluster * v1alpha1.OxiaCluster ) * metaV1.OwnerReference {
60+ isController := true
61+ return & metaV1.OwnerReference {
62+ Name : cluster .Name ,
63+ APIVersion : cluster .APIVersion ,
64+ UID : cluster .GetUID (),
65+ Kind : cluster .GetObjectKind ().GroupVersionKind ().Kind ,
66+ Controller : & isController ,
67+ }
5368}
5469
5570func allLabels (component Component , name string ) map [string ]string {
@@ -78,7 +93,7 @@ func additionalLabels(version string) map[string]string {
7893
7994func serviceAccount (component Component , cluster v1alpha1.OxiaCluster ) * coreV1.ServiceAccount {
8095 _serviceAccount := & coreV1.ServiceAccount {
81- ObjectMeta : objectMeta (component , cluster .Name ),
96+ ObjectMeta : objectMeta (component , cluster .Name , & cluster ),
8297 }
8398 if cluster .Spec .Image .PullSecrets != nil {
8499 _serviceAccount .ImagePullSecrets = []coreV1.LocalObjectReference {{Name : * cluster .Spec .Image .PullSecrets }}
@@ -88,7 +103,7 @@ func serviceAccount(component Component, cluster v1alpha1.OxiaCluster) *coreV1.S
88103
89104func role (cluster v1alpha1.OxiaCluster ) * rbacV1.Role {
90105 return & rbacV1.Role {
91- ObjectMeta : objectMeta (Coordinator , cluster .Name ),
106+ ObjectMeta : objectMeta (Coordinator , cluster .Name , & cluster ),
92107 Rules : policyRules (),
93108 }
94109}
@@ -105,7 +120,7 @@ func policyRules() []rbacV1.PolicyRule {
105120func roleBinding (cluster v1alpha1.OxiaCluster ) * rbacV1.RoleBinding {
106121 _resourceName := resourceName (Coordinator , cluster .Name )
107122 return & rbacV1.RoleBinding {
108- ObjectMeta : objectMeta (Coordinator , cluster .Name ),
123+ ObjectMeta : objectMeta (Coordinator , cluster .Name , & cluster ),
109124 Subjects : []rbacV1.Subject {{
110125 Kind : "ServiceAccount" ,
111126 Name : _resourceName ,
@@ -127,7 +142,7 @@ func service(component Component, cluster v1alpha1.OxiaCluster, ports []NamedPor
127142 publishNotReadyAddresses = true
128143 }
129144 service := & coreV1.Service {
130- ObjectMeta : objectMeta (component , cluster .Name ),
145+ ObjectMeta : objectMeta (component , cluster .Name , & cluster ),
131146 Spec : coreV1.ServiceSpec {
132147 Selector : selectorLabels (component , cluster .Name ),
133148 Ports : transform (ports , servicePort ),
@@ -169,7 +184,7 @@ func configMap(cluster v1alpha1.OxiaCluster) *coreV1.ConfigMap {
169184 log .Fatal ().Err (err ).Msg ("unable to marshal cluster config to yaml" )
170185 }
171186 return & coreV1.ConfigMap {
172- ObjectMeta : objectMeta (Coordinator , cluster .Name ),
187+ ObjectMeta : objectMeta (Coordinator , cluster .Name , & cluster ),
173188 Data : map [string ]string {
174189 "config.yaml" : string (bytes ),
175190 },
@@ -194,12 +209,12 @@ func coordinatorDeployment(cluster v1alpha1.OxiaCluster) *appsV1.Deployment {
194209 command = append (command , "--profile" )
195210 }
196211 deployment := & appsV1.Deployment {
197- ObjectMeta : objectMeta (Coordinator , cluster .Name ),
212+ ObjectMeta : objectMeta (Coordinator , cluster .Name , & cluster ),
198213 Spec : appsV1.DeploymentSpec {
199214 Replicas : pointer .Int32 (1 ),
200215 Selector : & metaV1.LabelSelector {MatchLabels : selectorLabels (Coordinator , cluster .Name )},
201216 Template : coreV1.PodTemplateSpec {
202- ObjectMeta : objectMeta (Coordinator , cluster .Name ),
217+ ObjectMeta : objectMeta (Coordinator , cluster .Name , nil ),
203218 Spec : coreV1.PodSpec {
204219 ServiceAccountName : _resourceName ,
205220 Containers : []coreV1.Container {{
@@ -246,13 +261,13 @@ func serverStatefulSet(cluster v1alpha1.OxiaCluster) *appsV1.StatefulSet {
246261 command = append (command , "--profile" )
247262 }
248263 statefulSet := & appsV1.StatefulSet {
249- ObjectMeta : objectMeta (Server , cluster .Name ),
264+ ObjectMeta : objectMeta (Server , cluster .Name , & cluster ),
250265 Spec : appsV1.StatefulSetSpec {
251266 Replicas : pointer .Int32 (int32 (cluster .Spec .Server .Replicas )),
252267 Selector : & metaV1.LabelSelector {MatchLabels : selectorLabels (Server , cluster .Name )},
253268 ServiceName : _resourceName ,
254269 Template : coreV1.PodTemplateSpec {
255- ObjectMeta : objectMeta (Server , cluster .Name ),
270+ ObjectMeta : objectMeta (Server , cluster .Name , nil ),
256271 Spec : coreV1.PodSpec {
257272 ServiceAccountName : _resourceName ,
258273 Containers : []coreV1.Container {{
@@ -310,7 +325,7 @@ func probe() *coreV1.Probe {
310325
311326func serviceMonitor (component Component , cluster v1alpha1.OxiaCluster ) * monitoringV1.ServiceMonitor {
312327 return & monitoringV1.ServiceMonitor {
313- ObjectMeta : objectMeta (component , cluster .Name ),
328+ ObjectMeta : objectMeta (component , cluster .Name , & cluster ),
314329 Spec : monitoringV1.ServiceMonitorSpec {
315330 Selector : metaV1.LabelSelector {MatchLabels : selectorLabels (component , cluster .Name )},
316331 Endpoints : []monitoringV1.Endpoint {{Port : MetricsPort .Name }},
0 commit comments