예제 #1
0
def add_user(username: Optional[str] = None,
             email: Optional[str] = None,
             password: Optional[str] = None) -> None:
    """
    Create the admin user. If user already exists, the process will ignore the error.
    :param username: airflow admin ui's username
    :param email: email of admin
    :param password: admin's password
    """
    user = PasswordUser(models.User())
    user.username = username if username else os.environ[
        AIRFLOW_WEBSERVER_USER_ENV_VAR]
    user.email = email if email else os.environ[AIRFLOW_WEBSERVER_EMAIL_ENV_VAR]
    user.password = password if password else os.environ[
        AIRFLOW_WEBSERVER_PASSWORD_ENV_VAR]

    session = settings.Session()

    try:
        session.add(user)
        session.commit()
    except IntegrityError as error_object:
        print(error_object)
    finally:
        session.close()
def create_superuser():
    """
    Creates a superuser (admin level) for accessing the web UI for Airflow

    :return: None
    """

    # get path to config file relative to this file
    current_dir = os.path.dirname(__file__)
    filepath = os.path.join(current_dir, 'config.ini')
    # read config.ini file
    config = ConfigParser()
    config.read(filepath)

    # create User object
    user = PasswordUser(models.User())
    user.username = config['web_authentication']['username']
    user.email = config['web_authentication']['email']
    user.password = config['web_authentication']['password']
    user.superuser = True

    # Add user to Airflow session
    session = settings.Session()
    session.add(user)
    session.commit()
    session.close()
예제 #3
0
def create_user(username: str,
                password: str,
                email: str,
                is_superuser: bool = True):
    """
    Method to create Airflow user

    :param username: (str) - Airflow User name
    :param password: (str) - Airflow Password
    :param email: (str) - Email of the user
    :param is_superuser: (str) - Is super user - True/False

    Note:
        Modified date: 10-04-2021
        Author: TB
    """
    user = PasswordUser(models.User())
    user.username = username
    user.email = email
    user.password = password
    user.superuser = is_superuser
    session = settings.Session()
    session.add(user)
    session.commit()
    session.close()
예제 #4
0
def create_admin_user(admin_user):
    """
    Create a user in Airflow metadata database to allow login with password_auth backend.

    :param admin_user: User properties as dictionary.
    :return: Job done.
    """
    print('Creating admin user...')
    user = PasswordUser(models.User())
    user.username = admin_user['username']
    user.password = admin_user['password']
    user.email = admin_user['email']

    session = settings.Session()
    try:
        existing = session.query(
            models.User).filter_by(username=user.username).first()
        if not existing:
            session.add(user)
            session.commit()
            print('\tCREATED: Admin user %s' % user.username)
        else:
            print('\tSKIPPED: Admin user %s already exists' % user.username)
    finally:
        session.close()
예제 #5
0
def create_user(username, password, email):
    # This import depends on flask_bcrypt
    # You should get it via installation of: 'apache-airflow[google_auth]'
    # More info: http://airflow.apache.org/docs/stable/security.html
    from airflow.contrib.auth.backends.password_auth import PasswordUser

    from airflow import models
    from airflow.settings import Session

    # Create user for experimental api users
    session = Session()
    print("sql_alchemy_conn: %s" % str(session.bind))
    try:
        user = (
            session.query(PasswordUser)
            .filter(PasswordUser.username == username)
            .one_or_none()
        )
        if not user:
            user = PasswordUser(models.User())
            user.username = username

        user.password = password
        user.email = email

        session.add(user)
        session.commit()
        session.close()

        print("User %s created successfully." % username)
    except Exception as e:
        print("Could not create user. %s" % e)
def create_user(username, email, password):
    user = PasswordUser(models.User())
    user.username = username
    user.email = email
    user.password = password
    session = settings.Session()
    session.add(user)
    session.commit()
    session.close()
예제 #7
0
def create_user():
    user = PasswordUser(models.User())
    user.username = '******'
    user.email = '*****@*****.**'
    user.password = '******'
    session = settings.Session()
    session.add(user)
    session.commit()
    session.close()
예제 #8
0
def add_user(username, email, password):
    user = PasswordUser(models.User())
    user.username = username
    user.email = email
    user.password = password
    session = settings.Session()
    session.add(user)
    session.commit()
    session.close()
예제 #9
0
def make_user(username, email):
    user = PasswordUser(models.User())
    user.username = username
    user.email = email
    user.superuser = True
    user.password = click.prompt("Password")
    session = settings.Session()
    session.add(user)
    session.commit()
    session.close()
예제 #10
0
def generate_admin_user(password):
    """
  Creates the new Airflow admin user.
  """
    user = PasswordUser(models.User())
    user.username = '******'
    user.email = get_email_address()
    user.password = password
    user.superuser = True
    return user
def main():
    print(">>>> create airflow user...")
    user = PasswordUser(models.User())
    user.username = '******'
    user.email = '*****@*****.**'
    user.password = '******'
    session = settings.Session()
    session.add(user)
    session.commit()
    session.close()
    print(">>>> create airflow user OK : user_id : user,  password : 123")
예제 #12
0
def create_user(username, password, email):
    """This programm creates users for airflow."""

    user = PasswordUser(models.User())
    user.username = username
    user.email = email
    user.password = password
    session = settings.Session()
    session.add(user)
    session.commit()
    session.close()
    click.echo(f'Account {username} created successfully!')
예제 #13
0
 def create(self):
     """
     create user
     """
     user = PasswordUser(models.User())
     user.username = self.params.get('name')
     user.email = self.params.get('email')
     user.password = self.params.get('password')
     session = settings.Session()
     session.add(user)
     session.commit()
     session.close()
예제 #14
0
def create_user(username, password, email):
    """This programm creates users for airflow."""

    user = PasswordUser(models.User())
    user.username = username
    user.email = email
    user.password = password
    session = settings.Session()
    session.add(user)
    session.commit()
    session.close()
    click.echo(f'Account {username} created successfully!')
예제 #15
0
def add_default_user(session=None):
    from airflow import models
    from airflow.contrib.auth.backends.password_auth import PasswordUser

    user = PasswordUser(models.User())
    user.username = '******'
    user.email = '*****@*****.**'
    user.password = '******'
    user.superuser = True

    session.add(user)
    session.commit()
예제 #16
0
def create_user(opts):
    from airflow.contrib.auth.backends.password_auth import PasswordUser
    from airflow import models, settings

    u = PasswordUser(models.User())
    u.username = opts['username']
    u.email = opts['email']
    u._set_password = opts['password']

    s = settings.Session()
    s.add(u)
    s.commit()
    s.close()
예제 #17
0
def create_user(opts):
    from airflow.contrib.auth.backends.password_auth import PasswordUser
    from airflow import models, settings

    u = PasswordUser(models.User())
    u.username = opts['username']
    u.email = opts['email']
    u._set_password = opts['password']

    s = settings.Session()
    s.add(u)
    s.commit()
    s.close()
예제 #18
0
def createuser():
    userdata = json.loads(request.data)
    username = userdata.get('user') or ''
    email = userdata.get('email') or ''
    password = userdata.get('password') or username + '123'
    superuser = userdata.get('superuser') or False
    if not superuser:
        superuser = 0
    else:
        superuser = 1

    data = {}
    try:
        if not username:
            data['status'] = '200'
            data[
                'message'] = "Username has missed, unable to create user in Airflow server"
            return jsonify(data)

        session = settings.Session()
        user = session.query(
            models.User).filter(models.User.username == username).first()
        if user:
            user.superuser = superuser
            session.commit()

            data['status'] = '200'
            data['message'] = 'SuperUser status is updated successfully!'
        else:
            user = PasswordUser(models.User())
            user.username = username
            user.email = email
            user.password = password
            user.superuser = superuser
            session.add(user)
            session.commit()

            data['status'] = '200'
            data['message'] = "User Created successfully!"

    except Exception as e:
        data['status'] = '400'
        data['message'] = e.message

    return jsonify(data)
예제 #19
0
def add_user(c):
    from airflow import models, settings
    from airflow.contrib.auth.backends.password_auth import PasswordUser

    import sqlalchemy

    user = PasswordUser(models.User())
    user.username = c.config.auth.username
    user.email = c.config.auth.email
    user.password = c.config.auth.password

    session = settings.Session()
    session.add(user)

    try:
        session.commit()
    except sqlalchemy.exc.IntegrityError as e:
        logging.exception(e)
    finally:
        session.close()
예제 #20
0
def add_user(username=os.environ['AIRFLOW_WEB_USER'],
             email=os.environ['AIRFLOW_WEB_EMAIL'],
             password=os.environ['AIRFLOW_WEB_PASSWORD']):
    """Create the admin user
    :param username: airflow admin ui's username
    :param email: email of admin
    :param password: admin's password
    :return: None
    """
    user = PasswordUser(models.User())
    user.username = username
    user.email = email
    user.password = password

    session = settings.Session()

    try:
        session.add(user)
        session.commit()
    except IntegrityError as error_object:
        print(error_object)
    finally:
        session.close()
예제 #21
0
def createuser():
    username = request.args.get('user')
    email = request.args.get('email', '')
    superuser = request.args.get('superuser', False)

    if superuser == 'False':
        superuser = 0
    else:
        superuser = 1

    try:
        user = PasswordUser(models.User())
        user.username = username
        user.email = email
        user.password = username + '123'
        user.superuser = superuser
        session = settings.Session()
        session.add(user)
        session.commit()

        return jsonify("User Created")
    except:
        return jsonify("Raised Exception")
예제 #22
0
# create airflow login user

import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
user = PasswordUser(models.User())
user.username = '******'
user.email = '*****@*****.**'
user.password = '******'
# user.superuser = True
session = settings.Session()
session.add(user)
session.commit()
session.close()
parser.add_argument("email", help="email address")
parser.add_argument("password", help="password")
args = parser.parse_args()

username = sys.argv[1]
email = sys.argv[2]
password = sys.argv[3]

session = settings.Session()


def is_user_exists(username):
    return (session.query(
        models.User).filter(models.User.username == username).first() != None)


if (not is_user_exists(username)):
    user = PasswordUser(models.User())
    logging.info("Adding Airflow user " + username + "...")
    user.username = username
    user.email = email
    user._set_password = password
    session.add(user)
    session.commit()
    logging.info("Successfully added Airflow user.")
    session.close()
else:
    logging.warning("Airflow User " + username + " already exists")

exit()
예제 #24
0
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
from airflow.models import Variable
from flask_bcrypt import generate_password_hash

# Get password from variables
password = Variable.get("user_password")

user = PasswordUser(models.User())
user.username = '******'
user.email = '*****@*****.**'
user._password = generate_password_hash(password, 12)

session = settings.Session()
session.add(user)
session.commit()
session.close()
exit()
예제 #25
0
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
from flask_bcrypt import generate_password_hash
from sqlalchemy import exists

session = settings.Session()
isUserPresent = not session.query(
    exists().where(models.User.username == 'airflow')).scalar()
if (isUserPresent):
    user = PasswordUser(models.User())
    user.username = '******'
    user.email = 'airflow@fab_airflow.com'
    user.superuser = True
    user._password = generate_password_hash('airflow', 12)
    session.add(user)
    session.commit()
session.close()
exit()
예제 #26
0
import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
user = PasswordUser(models.User())
user.username = '******'
user.email = '*****@*****.**'
user.password = '******'
session = settings.Session()
session.add(user)
session.commit()
session.close()
import airflow, sys
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser

try:
    if len(sys.argv) != 4:
        raise ValueError(
            'Missing required arguments for user account creation')

    user = PasswordUser(models.User())
    user.username = sys.argv[1]
    user.email = sys.argv[2]
    user.password = sys.argv[3]
    user.supersuer = True
    session = settings.Session()
    session.add(user)
    session.commit()
    session.close()
except Exception as e:
    print(e)
    raise
예제 #28
0
#!/usr/bin/env python
# encoding: utf-8
"""
@author: demo
@license: Copyright 2019-2022, LineZoneData 
@contact: [email protected]
@desc: 
"""

from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser

user = PasswordUser(models.User())
user.username = '******'
user.email = '*****@*****.**'
user.password = '******'
user.superuser = True

# the secret sauce is right here
from sqlalchemy import create_engine
engine = create_engine(
    "postgresql://*****:*****@192.168.21.151:5432/airflow")

session = settings.Session(bind=engine)
session.add(user)
session.commit()
session.close()
예제 #29
0
import os

airflow_user = os.environ.get('AIRFLOW_USER')
airflow_password = os.environ.get('AIRFLOW_PASSWORD')
airflow_email = os.environ.get('AIRFLOW_EMAIL')

if airflow_user and airflow_password:
    import airflow
    from airflow import models, settings
    from airflow.contrib.auth.backends.password_auth import PasswordUser

    session = settings.Session()

    q = session.query(PasswordUser).filter_by(username=airflow_user)

    if q.count():
        user = q.one()
        user.username = airflow_user
        user.password = airflow_password
        user.email = airflow_email
    else:
        user = PasswordUser(models.User())
        user.username = airflow_user
        user.password = airflow_password
        user.email = airflow_email
        user.superuser = True
        session.add(user)

    session.commit()
    session.close()
예제 #30
0
import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
user = PasswordUser(models.User())
user.username = '******'
user.email = '*****@*****.**'
user._set_password = '******'.encode('utf8')
session = settings.Session()
session.add(user)
session.commit()
session.close()
exit()
예제 #31
0
import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser

user = PasswordUser(models.User())
user.username = '******'
user.email = '*****@*****.**'
user.password = '******'
session = settings.Session()
session.add(user)
session.commit()
session.close()
import sys
import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser


def has_user(session, username):
    users = session.query(models.User)
    with_name = users.filter(models.User.username == username)
    return with_name.count() > 0


username = sys.argv[1]
email = sys.argv[2]
password = sys.argv[3]

session = settings.Session()

if not has_user(session, username):
    new_user = PasswordUser(models.User())
    new_user.username = username
    new_user.email = email
    new_user.password = password

    session.add(new_user)
    session.commit()

    print('user created')

session.close()
예제 #33
0
#!/usr/bin/env python

import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
user = PasswordUser(models.User())
user.username = '******'
user.email = '*****@*****.**'
user._set_password = '******'
session = settings.Session()
session.add(user)
session.commit()
session.close()
exit()
import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
from flask_bcrypt import generate_password_hash
user = PasswordUser(models.User())
user.username = '******'
user.email = '*****@*****.**'
user._password = generate_password_hash("password_here", 12).decode('utf-8')
session = settings.Session()
session.add(user)
session.commit()
session.close()
exit()
예제 #35
0
#!/usr/bin/python
# https://airflow.incubator.apache.org/security.html
username = '******'
email = '*****@*****.**'
#####

import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser

# https://stackoverflow.com/questions/3854692/generate-password-in-python
import string
from random import sample, choice
chars = string.letters + string.digits
length = 20
password = ''.join(choice(chars) for _ in range(length))
print "%s : %s" % (username, password)

user = PasswordUser(models.User())
user.username = username
user.email = email
user.password = password
session = settings.Session()
session.add(user)
session.commit()
session.close()

exit()