You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by tr...@apache.org on 2020/05/17 15:39:07 UTC

[flink] 05/11: [FLINK-17407] Introduce ExternalResourceDriver and ExternalResourceInfo interface.

This is an automated email from the ASF dual-hosted git repository.

trohrmann pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git

commit f0b980811cad03f18404b06b61f4459df4c8352a
Author: Yangze Guo <ka...@gmail.com>
AuthorDate: Wed Apr 1 10:18:22 2020 +0800

    [FLINK-17407] Introduce ExternalResourceDriver and ExternalResourceInfo interface.
---
 .../externalresource/ExternalResourceDriver.java   | 44 +++++++++++++++++++++
 .../ExternalResourceDriverFactory.java             | 42 ++++++++++++++++++++
 .../externalresource/ExternalResourceInfo.java     | 46 ++++++++++++++++++++++
 3 files changed, 132 insertions(+)

diff --git a/flink-core/src/main/java/org/apache/flink/api/common/externalresource/ExternalResourceDriver.java b/flink-core/src/main/java/org/apache/flink/api/common/externalresource/ExternalResourceDriver.java
new file mode 100644
index 0000000..290b97f
--- /dev/null
+++ b/flink-core/src/main/java/org/apache/flink/api/common/externalresource/ExternalResourceDriver.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+
+package org.apache.flink.api.common.externalresource;
+
+import org.apache.flink.annotation.PublicEvolving;
+
+import java.util.Set;
+
+/**
+ * Driver which takes the responsibility to manage and provide the information of external resource.
+ *
+ * <p>Drivers that should be instantiated via a {@link ExternalResourceDriverFactory}.
+ *
+ * <p>TaskExecutor will retrieve the {@link ExternalResourceInfo} set of the external resource
+ * from the drivers.
+ */
+@PublicEvolving
+public interface ExternalResourceDriver {
+
+	/**
+	 * Retrieve the information of the external resources according to the amount.
+	 *
+	 * @param amount of the required external resources
+	 * @return information set of the required external resources
+	 * @throws Exception if there is something wrong during retrieving
+	 */
+	Set<? extends ExternalResourceInfo> retrieveResourceInfo(long amount) throws Exception;
+}
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/externalresource/ExternalResourceDriverFactory.java b/flink-core/src/main/java/org/apache/flink/api/common/externalresource/ExternalResourceDriverFactory.java
new file mode 100644
index 0000000..251056b
--- /dev/null
+++ b/flink-core/src/main/java/org/apache/flink/api/common/externalresource/ExternalResourceDriverFactory.java
@@ -0,0 +1,42 @@
+/*
+ * 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.
+ */
+
+package org.apache.flink.api.common.externalresource;
+
+import org.apache.flink.annotation.PublicEvolving;
+import org.apache.flink.configuration.Configuration;
+
+/**
+ * Factory for {@link ExternalResourceDriver}. Instantiate a driver with configuration.
+ *
+ * <p>Drivers that can be instantiated with a factory automatically qualify for being loaded as a plugin, so long as
+ * the driver jar is self-contained (excluding Flink dependencies) and contains a
+ * {@code META-INF/services/org.apache.flink.api.common.externalresource.ExternalResourceDriverFactory} file containing the
+ * qualified class name of the factory.
+ */
+@PublicEvolving
+public interface ExternalResourceDriverFactory {
+	/**
+	 * Construct the ExternalResourceDriver from configuration.
+	 *
+	 * @param config configuration for this external resource
+	 * @return the driver for this external resource
+	 * @throws Exception if there is something wrong during the creation
+	 */
+	ExternalResourceDriver createExternalResourceDriver(Configuration config) throws Exception;
+}
diff --git a/flink-core/src/main/java/org/apache/flink/api/common/externalresource/ExternalResourceInfo.java b/flink-core/src/main/java/org/apache/flink/api/common/externalresource/ExternalResourceInfo.java
new file mode 100644
index 0000000..da06846
--- /dev/null
+++ b/flink-core/src/main/java/org/apache/flink/api/common/externalresource/ExternalResourceInfo.java
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+
+package org.apache.flink.api.common.externalresource;
+
+import org.apache.flink.annotation.PublicEvolving;
+
+import java.util.Collection;
+import java.util.Optional;
+
+/**
+ * Contains the information of an external resource.
+ */
+@PublicEvolving
+public interface ExternalResourceInfo {
+
+	/**
+	 * Get the property indicated by the specified key.
+	 *
+	 * @param key of the required property
+	 * @return an {@code Optional} containing the value associated to the key, or an empty {@code Optional} if no value has been stored under the given key
+	 */
+	Optional<String> getProperty(String key);
+
+	/**
+	 * Get all property keys.
+	 *
+	 * @return collection of all property keys
+	 */
+	Collection<String> getKeys();
+}