Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- unfinished code.
- Loading branch information
Showing
4 changed files
with
129 additions
and
0 deletions.
There are no files selected for viewing
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
Empty file.
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,36 @@ | ||
class Airflow(object): | ||
def __init__( | ||
self, | ||
name, | ||
graph, | ||
flow, | ||
code_package_sha, | ||
code_package_url, | ||
metadata, | ||
flow_datastore, | ||
environment, | ||
event_logger, | ||
monitor, | ||
tags=None, | ||
namespace=None, | ||
username=None, | ||
max_workers=None, | ||
is_project=False, | ||
): | ||
self.name = name | ||
self.graph = graph | ||
self.flow = flow | ||
self.code_package_sha = code_package_sha | ||
self.code_package_url = code_package_url | ||
self.metadata = metadata | ||
self.flow_datastore = flow_datastore | ||
self.environment = environment | ||
self.event_logger = event_logger | ||
self.monitor = monitor | ||
self.tags = tags | ||
self.namespace = namespace | ||
self.username = username | ||
self.max_workers = max_workers | ||
|
||
def compile(self): | ||
pass |
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,91 @@ | ||
from metaflow._vendor import click | ||
from metaflow import decorators | ||
from metaflow.util import get_username | ||
from metaflow.package import MetaflowPackage | ||
from .airflow import Airflow | ||
|
||
|
||
@click.group() | ||
def cli(): | ||
pass | ||
|
||
|
||
@cli.group(help="Commands related to Airflow.") | ||
@click.pass_context | ||
def airflow(ctx): | ||
pass | ||
|
||
|
||
def make_flow(obj, name, tags, namespace, worker_pools, is_project): | ||
# Attach AWS Batch decorator to the flow | ||
decorators._init_step_decorators( | ||
obj.flow, obj.graph, obj.environment, obj.flow_datastore, obj.logger | ||
) | ||
|
||
obj.package = MetaflowPackage( | ||
obj.flow, obj.environment, obj.echo, obj.package_suffixes | ||
) | ||
package_url, package_sha = obj.flow_datastore.save_data( | ||
[obj.package.blob], len_hint=1 | ||
)[0] | ||
return Airflow( | ||
name, | ||
obj.graph, | ||
obj.flow, | ||
package_sha, | ||
package_url, | ||
obj.metadata, | ||
obj.flow_datastore, | ||
obj.environment, | ||
obj.event_logger, | ||
obj.monitor, | ||
tags=tags, | ||
namespace=namespace, | ||
max_workers=worker_pools, | ||
username=get_username(), | ||
is_project=is_project, | ||
) | ||
|
||
|
||
@airflow.command(help="Create an airflow workflow from this metaflow workflow") | ||
@click.option( | ||
"--tag", | ||
"tags", | ||
multiple=True, | ||
default=None, | ||
help="Annotate all objects produced by AWS Step Functions runs " | ||
"with the given tag. You can specify this option multiple " | ||
"times to attach multiple tags.", | ||
) | ||
@click.option( | ||
"--namespace", | ||
"user_namespace", | ||
default=None, | ||
) | ||
@click.option( | ||
"--only-json", | ||
is_flag=True, | ||
default=False, | ||
help="Only print out JSON", | ||
) | ||
@click.option( | ||
"--worker-pools", | ||
default=100, | ||
show_default=True, | ||
) | ||
@click.pass_obj | ||
def create( | ||
obj, | ||
tags=None, | ||
user_namespace=None, | ||
only_json=False, | ||
worker_pools=None, | ||
): | ||
flow = make_flow( | ||
obj, | ||
obj.state_machine_name, | ||
tags, | ||
user_namespace, | ||
worker_pools, | ||
obj.is_project, | ||
) |