1616import  io .fabric8 .kubernetes .api .model .apps .Deployment ;
1717import  io .fabric8 .kubernetes .api .model .networking .v1 .Ingress ;
1818import  io .fabric8 .kubernetes .client .KubernetesClient ;
19+ import  io .fabric8 .kubernetes .client .dsl .Replaceable ;
1920import  io .javaoperatorsdk .operator .ReconcilerUtils ;
2021import  io .javaoperatorsdk .operator .api .config .informer .InformerConfiguration ;
2122import  io .javaoperatorsdk .operator .api .reconciler .Context ;
@@ -107,7 +108,7 @@ public UpdateControl<WebPage> reconcile(WebPage webPage, Context<WebPage> contex
107108          desiredHtmlConfigMap .getMetadata ().getName (),
108109          ns );
109110      var  res  = kubernetesClient .configMaps ().inNamespace (ns ).resource (desiredHtmlConfigMap )
110-           .createOrReplace ( );
111+           .createOr ( Replaceable :: update );
111112      log .debug ("Updated config map: {}" , res );
112113    }
113114
@@ -118,7 +119,7 @@ public UpdateControl<WebPage> reconcile(WebPage webPage, Context<WebPage> contex
118119          desiredDeployment .getMetadata ().getName (),
119120          ns );
120121      kubernetesClient .apps ().deployments ().inNamespace (ns ).resource (desiredDeployment )
121-           .createOrReplace ( );
122+           .createOr ( Replaceable :: update );
122123    }
123124
124125    var  existingService  = context .getSecondaryResource (Service .class ).orElse (null );
@@ -127,14 +128,15 @@ public UpdateControl<WebPage> reconcile(WebPage webPage, Context<WebPage> contex
127128          "Creating or updating Deployment {} in {}" ,
128129          desiredDeployment .getMetadata ().getName (),
129130          ns );
130-       kubernetesClient .services ().inNamespace (ns ).resource (desiredService ).createOrReplace ();
131+       kubernetesClient .services ().inNamespace (ns ).resource (desiredService )
132+           .createOr (Replaceable ::update );
131133    }
132134
133135    var  existingIngress  = context .getSecondaryResource (Ingress .class );
134136    if  (Boolean .TRUE .equals (webPage .getSpec ().getExposed ())) {
135137      var  desiredIngress  = makeDesiredIngress (webPage );
136138      if  (existingIngress .isEmpty () || !match (desiredIngress , existingIngress .get ())) {
137-         kubernetesClient .resource (desiredIngress ).inNamespace (ns ).createOrReplace ( );
139+         kubernetesClient .resource (desiredIngress ).inNamespace (ns ).createOr ( Replaceable :: update );
138140      }
139141    } else 
140142      existingIngress .ifPresent (
@@ -150,7 +152,7 @@ public UpdateControl<WebPage> reconcile(WebPage webPage, Context<WebPage> contex
150152      kubernetesClient .pods ().inNamespace (ns ).withLabel ("app" , deploymentName (webPage )).delete ();
151153    }
152154    webPage .setStatus (createStatus (desiredHtmlConfigMap .getMetadata ().getName ()));
153-     return  UpdateControl .updateStatus (webPage );
155+     return  UpdateControl .patchStatus (webPage );
154156  }
155157
156158  private  boolean  match (Ingress  desiredIngress , Ingress  existingIngress ) {
0 commit comments