I used requests instead of kube as an example, but what do you think about
doing something like this?  I'm happy to put this into a PR if it would
solve the pain point today.

import logging

try:
    import requests
except ModuleNotFoundError:
    import sys
    logging.warning('kube not installed - skipping kube examples')
    sys.exit()

resp = requests.get('http://example.com')
print(resp)
...

Taylor

*Taylor Edmiston*
Blog <https://blog.tedmiston.com/> | CV
<https://stackoverflow.com/cv/taylor> | LinkedIn
<https://www.linkedin.com/in/tedmiston/> | AngelList
<https://angel.co/taylor> | Stack Overflow
<https://stackoverflow.com/users/149428/taylor-edmiston>


On Wed, May 30, 2018 at 4:40 AM, Driesprong, Fokko <fo...@driesprong.frl>
wrote:

> Hi Craig,
>
> This is something that needs to be fixed. I agree with you this is very
> dirty. In your installation you're not installing the kubernetes stuff, so
> the KubernetesPodOperator is ignored. We need to figure out how to have
> example dags that are not compatible with the vanilla installation, or we
> need to remove the kubernetes example for now, and move it to the
> documentation.
>
> Cheers, Fokko
>
> 2018-05-30 2:11 GMT+02:00 Craig Rodrigues <crodr...@gmail.com>:
>
> > I tested master branch by putting the following in my requirements.txt:
> >
> > git+https://github.com/rodrigc/incubator-airflow@
> > master#egg=apache-airflow[celery,crypto,emr,hive,hdfs,
> > ldap,mysql,postgres,redis,slack,s3]
> >
> > and did a pip install -r requirements.txt
> >
> > When I started the airflow webserver, I saw deprecation warnings.  I
> > put some additional debugging in models.py to through an exception so
> that
> > I could see the
> > full stacktrace:
> >
> > [2018-05-29 14:00:34,419] {models.py:307} ERROR - Failed to import:
> > /Users/c-craigr/airflow2/lib/python2.7/site-packages/
> > airflow/example_dags/example_kubernetes_operator.py
> > Traceback (most recent call last):
> >   File "/Users/c-craigr/airflow2/lib/python2.7/site-packages/
> airflow/models.py",
> > line 304, in process_file
> >     m = imp.load_source(mod_name, filepath)
> >   File "/Users/c-craigr/airflow2/lib/python2.7/site-packages/
> > airflow/example_dags/example_kubernetes_operator.py", line 53, in
> <module>
> >     dag=dag)
> >   File "/Users/c-craigr/airflow2/lib/python2.7/site-packages/
> airflow/utils/decorators.py",
> > line 98, in wrapper
> >     result = func(*args, **kwargs)
> >   File "/Users/c-craigr/airflow2/lib/python2.7/site-packages/
> airflow/models.py",
> > line 2308, in __init__
> >     raise Exception("Invalid use of args or kwargs")
> > Exception: Invalid use of args or kwargs
> >
> >
> > If looks like example_kubernetes_operator.py, this code is the source of
> > the exception:
> >
> > k = KubernetesPodOperator(
> >     namespace='default',
> >     image="ubuntu:16.04",
> >     cmds=["bash", "-cx"],
> >     arguments=["echo", "10"],
> >     labels={"foo": "bar"},
> >     name="airflow-test-pod",
> >     in_cluster=False,
> >     task_id="task",
> >     get_logs=True,
> >     dag=dag)
> >
> >
> > Without my extra debugging, the deprecation warning looks like this:
> >
> > [2018-05-29 14:06:27,567] {example_kubernetes_operator.py:30} WARNING -
> > Could not import KubernetesPodOperator
> > /Users/c-craigr/airflow2/lib/python2.7/site-packages/
> airflow/models.py:2315:
> > PendingDeprecationWarning: Invalid arguments were passed to BaseOperator.
> > Support for passing such arguments will be dropped in Airflow 2.0.
> Invalid
> > arguments were:
> > *args: ()
> > **kwargs: {'name': 'airflow-test-pod', 'image': 'ubuntu:16.04', 'labels':
> > {'foo': 'bar'}, 'namespace': 'default', 'cmds': ['bash', '-cx'],
> > 'arguments': ['echo', '10'], 'in_cluster': False, 'get_logs': True}
> >   category=PendingDeprecationWarning
> >
> >
> >
> > What is the correct fix for this?  It looks like a lot of operators pass
> > in arguments which are not
> > processed by BaseOperator, and thus trip over this deprecation warning.
> >
> > --
> > Craig
> >
>

Reply via email to