| .. 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. |
| |
| ResourcePlugin |
| ============== |
| |
| `ResourcePlugin` is an abstract class of resource plug-in parameters of task subclass and workflow. |
| All resource plugins need to inherit and override its abstract methods. |
| |
| Code |
| ---- |
| .. literalinclude:: ../../../src/pydolphinscheduler/core/resource_plugin.py |
| :start-after: [start resource_plugin_definition] |
| :end-before: [end resource_plugin_definition] |
| |
| Dive Into |
| --------- |
| It has the following key functions. |
| |
| - Method `__init__`: The `__init__` function has STR type parameter `prefix`, which means the prefix of the resource. |
| |
| You can rewrite this function if necessary. |
| |
| .. literalinclude:: ../../../src/pydolphinscheduler/core/resource_plugin.py |
| :start-after: [start init_method] |
| :end-before: [end init_method] |
| |
| - Method `read_file`: Get content from the given URI, The function parameter is the suffix of the file path. |
| |
| The file prefix has been initialized in init of the resource plug-in. |
| |
| The prefix plus suffix is the absolute path of the file in this resource. |
| |
| It is an abstract function. You must rewrite it |
| |
| .. literalinclude:: ../../../src/pydolphinscheduler/core/resource_plugin.py |
| :start-after: [start abstractmethod read_file] |
| :end-before: [end abstractmethod read_file] |
| |
| .. automodule:: pydolphinscheduler.core.resource_plugin |
| |
| How to use |
| ---------- |
| Resource plugin can be used in task subclasses and workflows. You can use the resource plugin by adding the `resource_plugin` parameter when they are initialized. |
| For example, local resource plugin, add `resource_plugin = Local("/tmp")`. |
| |
| The resource plugin we currently support are `local`, `github`, `gitlab`, `OSS`, `S3`. |
| |
| Here is an example. |
| |
| .. literalinclude:: ../../../src/pydolphinscheduler/examples/tutorial_resource_plugin.py |
| :start-after: [start workflow_declare] |
| :end-before: [end task_declare] |
| |
| When the resource_plugin parameter is defined in both the task subclass and the workflow, the resource_plugin defined in the task subclass is used first. |
| |
| If the task subclass does not define resource_plugin, but the resource_plugin is defined in the workflow, the resource_plugin in the workflow is used. |
| |
| Of course, if neither the task subclass nor the workflow specifies resource_plugin, the command at this time will be executed as a script, |
| |
| in other words, we are forward compatible. |