With Flink operator plugin I want a <custom resour...
# troubleshooting
d
With Flink operator plugin I want a custom resource validator to make a decision based on namespace name or some data that requires me to look outside the FlinkDeployment spec. For example:
Copy code
public class CustomValidator implements FlinkResourceValidator {
    @Override
    public Optional<String> validateDeployment(FlinkDeployment deployment) {
        var namespace = deployment.getMetadata().getNamespace();
        if (namespace == "foo") {
          //...
        }
        return Optional.empty();
    }
}
However, the fabric8 libraries aren’t in the classpath when I run the operator. It complains about missing
io.fabric8.kubernetes.api.model.ObjectMeta
.
Copy code
flink-webhook 2023-05-22 23:20:16,306 o.a.f.s.n.i.n.c.DefaultChannelPipeline [WARN ] An exceptionCaught() event was fired, and it reached at the tail of the pipeline. It usually means the last handler in the pipeline did not handle the exception.
flink-webhook java.lang.NoClassDefFoundError: io/fabric8/kubernetes/api/model/ObjectMeta
flink-webhook 	at my.flink.operator.plugin.CustomResourceValidator.validateDeployment(CustomResourceValidator.java:40)
flink-webhook 	at org.apache.flink.kubernetes.operator.admission.FlinkValidator.validateDeployment(FlinkValidator.java:74)
flink-webhook 	at org.apache.flink.kubernetes.operator.admission.FlinkValidator.validate(FlinkValidator.java:62)
flink-webhook 	at org.apache.flink.kubernetes.operator.admission.FlinkValidator.validate(FlinkValidator.java:41)
flink-webhook 	at io.javaoperatorsdk.admissioncontroller.validation.DefaultRequestValidator.handle(DefaultRequestValidator.java:27)
flink-webhook 	at io.javaoperatorsdk.admissioncontroller.AdmissionController.handle(AdmissionController.java:27)
...
Dropping
kubernetes-model-core.jar
into
/opt/flink/operator-lib
doesn’t have an effect. I’m Using operator 1.5.0. I’m unsure how to make this work.