forked from apache/flink
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[FLINK-17407] Introduce ExternalResourceDriver and ExternalResourceIn…
…fo interface.
- Loading branch information
1 parent
6b5c173
commit f0b9808
Showing
3 changed files
with
132 additions
and
0 deletions.
There are no files selected for viewing
44 changes: 44 additions & 0 deletions
44
...re/src/main/java/org/apache/flink/api/common/externalresource/ExternalResourceDriver.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} |
42 changes: 42 additions & 0 deletions
42
...main/java/org/apache/flink/api/common/externalresource/ExternalResourceDriverFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} |
46 changes: 46 additions & 0 deletions
46
...core/src/main/java/org/apache/flink/api/common/externalresource/ExternalResourceInfo.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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(); | ||
} |