Skip to content

Commit f41afea

Browse files
authored
Merge pull request #131 from bf2fc6cc711aee1a0c2a/breaking-api
BREAKING: Add metadata container for the KafkaConnection
2 parents f332f69 + ae34c06 commit f41afea

File tree

11 files changed

+70
-77
lines changed

11 files changed

+70
-77
lines changed

olm/catalogsource.yaml

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
apiVersion: operators.coreos.com/v1alpha1
22
kind: CatalogSource
33
metadata:
4-
name: rhoas-operators
4+
name: rhoas-operators2
55
namespace: openshift-marketplace
66
spec:
77
displayName: RHOAS Operators
88
icon:
99
base64data: ""
1010
mediatype: ""
11-
image: quay.io/rhoasg/service-operator-registry:autolatest
11+
image: quay.io/rhoas/service-operator-registry:autolatest
1212
priority: -400
1313
publisher: RHOAS
1414
sourceType: grpc

olm/olm-template/manifests/rhoas-operator.kafkaconnections.crd.yaml

+9-11
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@ kind: CustomResourceDefinition
33
metadata:
44
name: kafkaconnections.rhoas.redhat.com
55
annotations:
6-
service.binding/host: 'path={.status.bootstrapServerHost}'
6+
service.binding/bootstrapServers: 'path={.status.bootstrapServerHost}'
77
service.binding/password: >-
88
path={.status.serviceAccountSecretName},objectType=Secret,sourceKey=client-secret
99
service.binding/user: >-
1010
path={.status.serviceAccountSecretName},objectType=Secret,sourceKey=client-id
11-
service.binding/saslMechanism: 'path={.status.saslMechanism}'
12-
service.binding/securityProtocol: 'path={.status.securityProtocol}'
11+
## Additional binding metadata required for Quarkus
12+
service.binding/saslMechanism: 'path={.status.metadata.saslMechanism}'
13+
service.binding/securityProtocol: 'path={.status.metadata.securityProtocol}'
14+
service.binding/type: 'path={.status.metadata.type}'
15+
service.binding/provider: 'path={.status.metadata.provider}'
1316
spec:
1417
group: rhoas.redhat.com
1518
names:
@@ -45,9 +48,10 @@ spec:
4548
message:
4649
nullable: true
4750
type: string
48-
uiRef:
51+
metadata:
4952
nullable: true
50-
type: string
53+
type: object
54+
x-kubernetes-preserve-unknown-fields: true
5155
updated:
5256
nullable: true
5357
type: string
@@ -57,12 +61,6 @@ spec:
5761
serviceAccountSecretName:
5862
nullable: true
5963
type: string
60-
saslMechanism:
61-
nullable: true
62-
type: string
63-
securityProtocol:
64-
nullable: true
65-
type: string
6664
conditions:
6765
type: array
6866
items:

source/model/pom.xml

+15-11
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,13 @@
1515
<fabric8.version>5.0.0</fabric8.version>
1616
<operator.sdk.version>1.7.0</operator.sdk.version>
1717
<quarkus.version>1.11.0.Final</quarkus.version>
18-
<dekorate.version>2.0.0.beta3</dekorate.version>
1918
<sundrio.version>0.24.1</sundrio.version>
19+
<fabric8.models.version>5.2.0</fabric8.models.version>
20+
<fabric8.crdgen.version>5.2.0</fabric8.crdgen.version>
2021

2122
</properties>
2223
<dependencyManagement>
2324
<dependencies>
24-
<dependency>
25-
<groupId>io.dekorate</groupId>
26-
<artifactId>crd-annotations</artifactId>
27-
<version>${dekorate.version}</version>
28-
</dependency>
2925
<dependency>
3026
<groupId>io.sundr</groupId>
3127
<artifactId>builder-annotations</artifactId>
@@ -34,16 +30,24 @@
3430
</dependencies>
3531
</dependencyManagement>
3632
<dependencies>
33+
<dependency>
34+
<groupId>io.fabric8</groupId>
35+
<artifactId>crd-generator-apt</artifactId>
36+
<scope>compile</scope>
37+
<version>${fabric8.crdgen.version}</version>
38+
</dependency>
39+
<!-- This dependency will not be needed anymore in a future release of the kubernetes-client -->
40+
<dependency>
41+
<groupId>io.fabric8</groupId>
42+
<artifactId>kubernetes-model-common</artifactId>
43+
<scope>compile</scope>
44+
<version>${fabric8.models.version}</version>
45+
</dependency>
3746
<dependency>
3847
<groupId>io.fabric8</groupId>
3948
<artifactId>kubernetes-client</artifactId>
4049
<version>${fabric8.version}</version>
4150
</dependency>
42-
<dependency>
43-
<groupId>io.dekorate</groupId>
44-
<artifactId>crd-annotations</artifactId>
45-
<optional>true</optional> <!-- we need to keep this optional to avoid conflicts with quarkus-kubernetes -->
46-
</dependency>
4751
<dependency>
4852
<groupId>io.sundr</groupId>
4953
<artifactId>builder-annotations</artifactId>

source/model/src/main/java/com/openshift/cloud/v1alpha/models/CloudServiceAccountRequest.java

-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.openshift.cloud.v1alpha.models;
22

3-
import io.dekorate.crd.annotation.Crd;
43
import io.fabric8.kubernetes.api.model.Namespaced;
54
import io.fabric8.kubernetes.client.CustomResource;
65
import io.fabric8.kubernetes.model.annotation.Group;
@@ -13,7 +12,6 @@
1312
@Plural("cloudserviceaccountrequests")
1413
@Group("rhoas.redhat.com")
1514
@Version("v1alpha1")
16-
@Crd(group = "rhoas.redhat.com", version = "v1alpha1")
1715
public class CloudServiceAccountRequest
1816
extends CustomResource<CloudServiceAccountRequestSpec, CloudServiceAccountRequestStatus>
1917
implements Namespaced {

source/model/src/main/java/com/openshift/cloud/v1alpha/models/CloudServicesRequest.java

-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.openshift.cloud.v1alpha.models;
22

3-
import io.dekorate.crd.annotation.Crd;
43
import io.fabric8.kubernetes.api.model.Namespaced;
54
import io.fabric8.kubernetes.client.CustomResource;
65
import io.fabric8.kubernetes.model.annotation.Group;
@@ -13,7 +12,6 @@
1312
@Plural("cloudservicesrequests")
1413
@Group("rhoas.redhat.com")
1514
@Version("v1alpha1")
16-
@Crd(group = "rhoas.redhat.com", version = "v1alpha1")
1715
public class CloudServicesRequest
1816
extends CustomResource<CloudServicesRequestSpec, CloudServicesRequestStatus>
1917
implements Namespaced {

source/model/src/main/java/com/openshift/cloud/v1alpha/models/KafkaConnection.java

-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.openshift.cloud.v1alpha.models;
22

3-
import io.dekorate.crd.annotation.Crd;
43
import io.fabric8.kubernetes.api.model.Namespaced;
54
import io.fabric8.kubernetes.api.model.ObjectMeta;
65
import io.fabric8.kubernetes.client.CustomResource;
@@ -14,7 +13,6 @@
1413
@Plural("kafkaconnections")
1514
@Group("rhoas.redhat.com")
1615
@Version("v1alpha1")
17-
@Crd(group = "rhoas.redhat.com", version = "v1alpha1")
1816
public class KafkaConnection extends CustomResource<KafkaConnectionSpec, KafkaConnectionStatus>
1917
implements Namespaced {
2018

Original file line numberDiff line numberDiff line change
@@ -1,30 +1,26 @@
11
package com.openshift.cloud.v1alpha.models;
22

33
import io.sundr.builder.annotations.Buildable;
4+
import java.util.HashMap;
45
import java.util.List;
6+
import java.util.Map;
57

68
@Buildable
79
public class KafkaConnectionStatus {
8-
9-
private static final String UI_REF_TEMPLATE =
10-
"https://cloud.redhat.com/beta/application-services/openshift-streams/kafkas/%s";
11-
1210
private String message;
1311
private String updated;
1412
private String bootstrapServerHost;
1513
private String serviceAccountSecretName;
16-
private String saslMechanism;
17-
private String securityProtocol;
18-
private String uiRef;
1914
private List<KafkaCondition> conditions;
15+
private Map<String, String> metadata;
2016

2117
/** No args constructor for use in serialization */
2218
public KafkaConnectionStatus() {}
2319

2420
/**
2521
* @param serviceAccountSecretName
2622
* @param message
27-
* @param boostrapServer
23+
* @param bootstrapServerHost
2824
* @param updated
2925
*/
3026
public KafkaConnectionStatus(
@@ -34,8 +30,7 @@ public KafkaConnectionStatus(
3430
this.updated = updated;
3531
this.bootstrapServerHost = bootstrapServerHost;
3632
this.serviceAccountSecretName = serviceAccountSecretName;
37-
this.saslMechanism = "PLAINTEXT";
38-
this.securityProtocol = "SASL_SSL";
33+
this.metadata = new HashMap<String, String>();
3934
}
4035

4136
public String getMessage() {
@@ -62,22 +57,6 @@ public void setServiceAccountSecretName(String serviceAccountSecretName) {
6257
this.serviceAccountSecretName = serviceAccountSecretName;
6358
}
6459

65-
public String getSecurityProtocol() {
66-
return securityProtocol;
67-
}
68-
69-
public void setSecurityProtocol(String securityProtocol) {
70-
this.securityProtocol = securityProtocol;
71-
}
72-
73-
public String getSaslMechanism() {
74-
return saslMechanism;
75-
}
76-
77-
public void setSaslMechanism(String saslMechanism) {
78-
this.saslMechanism = saslMechanism;
79-
}
80-
8160
public List<KafkaCondition> getConditions() {
8261
return conditions;
8362
}
@@ -94,23 +73,11 @@ public void setBootstrapServerHost(String bootstrapServerHost) {
9473
this.bootstrapServerHost = bootstrapServerHost;
9574
}
9675

97-
public String getUiRef() {
98-
return uiRef;
76+
public Map<String, String> getMetadata() {
77+
return metadata;
9978
}
10079

101-
public void setUiRef(String uiRef) {
102-
this.uiRef = uiRef;
103-
}
104-
105-
/**
106-
* Set the UI ref with a templated using a kafka ID
107-
*
108-
* <p>The template is
109-
* "https://cloud.redhat.com/beta/application-services/openshift-streams/kafkas/%s"
110-
*
111-
* @param kafkaId the value to replace
112-
*/
113-
public void setUiRefForKafkaId(String kafkaId) {
114-
this.uiRef = String.format(UI_REF_TEMPLATE, kafkaId);
80+
public void setMetadata(Map<String, String> metadata) {
81+
this.metadata = metadata;
11582
}
11683
}

source/model/src/main/java/com/openshift/cloud/v1alpha/models/UserKafka.java

-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ public UserKafka() {}
1818
/**
1919
* @param owner
2020
* @param provider
21-
* @param created
2221
* @param id
2322
* @param region
2423
*/

source/rhoas/src/main/java/com/openshift/cloud/controllers/KafkaConnectionController.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.openshift.cloud.beans.AccessTokenSecretTool;
44
import com.openshift.cloud.beans.KafkaApiClient;
5+
import com.openshift.cloud.utils.ConnectionResourcesMetadata;
56
import com.openshift.cloud.v1alpha.models.KafkaConnection;
67
import io.javaoperatorsdk.operator.api.*;
78
import io.javaoperatorsdk.operator.processing.event.EventSourceManager;
@@ -50,9 +51,7 @@ public UpdateControl<KafkaConnection> createOrUpdateResource(
5051
status.setUpdated(Instant.now().toString());
5152
status.setBootstrapServerHost(bootStrapHost);
5253
status.setServiceAccountSecretName(serviceAccountSecretName);
53-
status.setUiRefForKafkaId(kafkaId);
54-
status.setSaslMechanism("PLAIN");
55-
status.setSecurityProtocol("SASL_SSL");
54+
status.setMetadata(ConnectionResourcesMetadata.buildKafkaMetadata(kafkaId));
5655

5756
ConditionUtil.setAllConditionsTrue(resource.getStatus().getConditions());
5857
} catch (ConditionAwareException e) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.openshift.cloud.utils;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
6+
/** Contains generic metadata for the resource connection instances */
7+
public class ConnectionResourcesMetadata {
8+
9+
private static final String UI_REF_TEMPLATE =
10+
"https://cloud.redhat.com/beta/application-services/openshift-streams/kafkas/%s";
11+
12+
/**
13+
* Contains hardcoded values for all metadata for Kafka specific properties
14+
*
15+
* @param kafkaId
16+
* @return
17+
*/
18+
public static Map<String, String> buildKafkaMetadata(String kafkaId) {
19+
var map = new HashMap<String, String>();
20+
map.put("saslMechanism", "PLAIN");
21+
map.put("securityProtocol", "SASL_SSL");
22+
map.put("cloudUI", String.format(UI_REF_TEMPLATE, kafkaId));
23+
map.put("provider", "rhoas");
24+
map.put("type", "kafka");
25+
return map;
26+
}
27+
}

source/rhoas/src/main/resources/application.properties

+6-1
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,14 @@ quarkus.container-image.name=service-operator
66
quarkus.container-image.tag=0.0.10
77

88
##overide on cli to push to registry
9+
910
quarkus.container-image.push=false
1011
quarkus.container-image.registry=quay.io
1112

1213
## TODO Remove this when OLM is updated
1314
## it is a workaround for a resources issue
14-
quarkus.jib.jvm-arguments=-Xmx64m,-Xms32m
15+
quarkus.jib.jvm-arguments=-Xmx64m,-Xms32m
16+
17+
## Local dev options
18+
### Configure to watch only single namespace
19+
# quarkus.operator-sdk.controllers.annotation.namespaces=rhoas-sandbox

0 commit comments

Comments
 (0)