Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

""" 

Authentication is implemented using flask_login and different environments can 

implement their own login mechanisms by providing an `airflow_login` module 

in their PYTHONPATH. airflow_login should be based off the 

`airflow.www.login` 

""" 

from builtins import object 

__version__ = "1.5.2" 

 

import logging 

import os 

import sys 

 

import airflow.configuration 

 

from airflow.models import DAG 

from flask.ext.admin import BaseView 

from importlib import import_module 

from airflow.utils import AirflowException 

 

DAGS_FOLDER = os.path.expanduser(configuration.get('core', 'DAGS_FOLDER')) 

if DAGS_FOLDER not in sys.path: 

    sys.path.append(DAGS_FOLDER) 

 

login = None 

 

 

def load_login(): 

    auth_backend = 'airflow.default_login' 

    try: 

        if configuration.getboolean('webserver', 'AUTHENTICATE'): 

            auth_backend = configuration.get('webserver', 'auth_backend') 

    except configuration.AirflowConfigException: 

        if configuration.getboolean('webserver', 'AUTHENTICATE'): 

            logging.warning("auth_backend not found in webserver config reverting to *deprecated*" 

                            " behavior of importing airflow_login") 

            auth_backend = "airflow_login" 

 

    try: 

        global login 

        login = import_module(auth_backend) 

    except ImportError as err: 

        logging.critical( 

            "Cannot import authentication module %s. " 

            "Please correct your authentication backend or disable authentication: %s", 

            auth_backend, err 

        ) 

        if configuration.getboolean('webserver', 'AUTHENTICATE'): 

            raise AirflowException("Failed to import authentication backend") 

 

 

class AirflowViewPlugin(BaseView): 

    pass 

 

 

class AirflowMacroPlugin(object): 

    def __init__(self, namespace): 

        self.namespace = namespace 

 

from airflow import operators 

from airflow import hooks 

from airflow import executors 

from airflow import macros 

from airflow import contrib 

 

operators.integrate_plugins() 

hooks.integrate_plugins() 

macros.integrate_plugins()