2
2
3
3
import io .fabric8 .kubernetes .api .model .OwnerReference ;
4
4
import io .fabric8 .kubernetes .api .model .apps .Deployment ;
5
+ import io .fabric8 .kubernetes .api .model .apps .DoneableDeployment ;
5
6
import io .fabric8 .kubernetes .client .KubernetesClient ;
6
7
import io .fabric8 .kubernetes .client .KubernetesClientException ;
7
8
import io .fabric8 .kubernetes .client .Watcher ;
9
+ import io .fabric8 .kubernetes .client .dsl .RollableScalableResource ;
8
10
import io .fabric8 .kubernetes .client .utils .Serialization ;
11
+ import io .javaoperatorsdk .operator .api .DeleteControl ;
9
12
import io .javaoperatorsdk .operator .processing .dependentresource .DependentResource ;
13
+ import io .javaoperatorsdk .operator .processing .dependentresource .SimpleDeleteDescriptor ;
10
14
import io .javaoperatorsdk .operator .processing .dependentresource .Status ;
11
15
import io .javaoperatorsdk .operator .processing .event .AbstractEventSource ;
12
16
import org .slf4j .Logger ;
24
28
import static java .net .HttpURLConnection .HTTP_GONE ;
25
29
26
30
public class DeploymentDependentResource extends AbstractEventSource
27
- implements DependentResource <DeploymentInput , DeploymentStatus >, Watcher <Deployment > {
31
+ implements DependentResource <DeploymentInput , DeleteInput , DeploymentStatus >, Watcher <Deployment > {
28
32
29
33
private final static Logger log = LoggerFactory .getLogger (DeploymentDependentResource .class );
30
34
@@ -42,7 +46,7 @@ private void registerWatch() {
42
46
43
47
44
48
@ Override
45
- public DeploymentStatus reconcile (DeploymentInput input ) {
49
+ public DeploymentStatus createOrUpdate (DeploymentInput input ) {
46
50
47
51
Optional <Deployment > cachedDeployment = getLatestDeployment (input .getCustomResourceUid ());
48
52
Deployment deployment ;
@@ -56,6 +60,18 @@ public DeploymentStatus reconcile(DeploymentInput input) {
56
60
Status .CREATED_SUCCESSFULLY : Status .IN_PROGRESS , deployment );
57
61
}
58
62
63
+ @ Override
64
+ public DeleteControl delete (DeleteInput input ) {
65
+ log .info ("Deleting Deployment {}" , input .getName ());
66
+ RollableScalableResource <Deployment , DoneableDeployment > deployment = client .apps ().deployments ()
67
+ .inNamespace (input .getNamespace ())
68
+ .withName (input .getName ());
69
+ if (deployment .get () != null ) {
70
+ deployment .delete ();
71
+ }
72
+ return DeleteControl .DEFAULT_DELETE ;
73
+ }
74
+
59
75
private Deployment createOrUpdateDeployment (DeploymentInput input ) {
60
76
String ns = input .getNamespace ();
61
77
Deployment existingDeployment = client .apps ().deployments ()
@@ -73,7 +89,7 @@ private Deployment createOrUpdateDeployment(DeploymentInput input) {
73
89
74
90
//make sure label selector matches label (which has to be matched by service selector too)
75
91
deployment .getSpec ().getTemplate ().getMetadata ().getLabels ().put ("app" , input .getName ());
76
- deployment .getSpec ().getSelector ().getMatchLabels ().put ("app" ,input .getName ());
92
+ deployment .getSpec ().getSelector ().getMatchLabels ().put ("app" , input .getName ());
77
93
78
94
OwnerReference ownerReference = deployment .getMetadata ().getOwnerReferences ().get (0 );
79
95
ownerReference .setName (input .getName ());
0 commit comments