diff --git a/docs/spark_operator_api_library.md b/docs/spark_operator_api_library.md new file mode 100644 index 00000000..e5782912 --- /dev/null +++ b/docs/spark_operator_api_library.md @@ -0,0 +1,51 @@ + + +# Use Spark Operator API Library in Your Java Application + +In addition to direct YAML, you may also leverage our Java API library to create and manage Spark +workloads. + +## Choosing the Right Dependency + +We publish two variants of this library: + +```groovy +implementation("org.apache.spark:spark-operator-api") +``` + +This library keeps your project free from a direct dependency on Fabric8 Kubernetes Client. It's +recommended if you only interact with our API at the YAML/CRD level (e.g. generating manifests, +using our higher-level abstractions). Use this if you don’t need direct access to Fabric8 model +objects like PodTemplateSpec, Deployment, etc. + +If your application requires access on fabric8 models, it's recommended to use + +```groovy +implementation("org.apache.spark:spark-operator-api-fabric8") +``` + +This library publishes the same core library, with Fabric8 declared as an API dependency. This +means Fabric8 model classes (Pod, PodTemplateSpec, Deployment, etc.) are available directly on +your classpath when you depend on our library. It's recommended if you want to compose or extend +Spark Operator API using Fabric8 types (for example, embedding a Fabric8 PodTemplateSpec into +Spark Operator CRD). + +Do not depend on both `spark-operator-api` and `spark-operator-api-fabric8` at the same time. +Choose one based on your use case. diff --git a/settings.gradle b/settings.gradle index bf5289fb..a123d1ab 100644 --- a/settings.gradle +++ b/settings.gradle @@ -18,6 +18,7 @@ */ rootProject.name = 'apache-spark-kubernetes-operator' include 'spark-operator-api' +include 'spark-operator-api-fabric8' include 'spark-submission-worker' include 'spark-operator' include "build-tools-docs-utils" diff --git a/spark-operator-api-fabric8/build.gradle b/spark-operator-api-fabric8/build.gradle new file mode 100644 index 00000000..a2e1bcff --- /dev/null +++ b/spark-operator-api-fabric8/build.gradle @@ -0,0 +1,30 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +plugins { + id 'java-library' +} + +dependencies { + api project(":spark-operator-api") + // fabric8 + api(libs.kubernetes.client) { + exclude group: 'com.squareup.okhttp3' + } +} diff --git a/spark-operator-api/build.gradle b/spark-operator-api/build.gradle index 8fe8b7a7..b515c8ee 100644 --- a/spark-operator-api/build.gradle +++ b/spark-operator-api/build.gradle @@ -16,6 +16,10 @@ * specific language governing permissions and limitations * under the License. */ +plugins { + id 'java-library' +} + dependencies { // fabric8 implementation(libs.kubernetes.client) {