Exemple #1
0
def get_inventory():
    query = request.args
    type = query.get('type', 'cmdb')
    if type == 'file':
        bookname = query.get('book')
        hosts = get_inventory_by_book(bookname)
    else:
        keyword = query.get('keyword')
        hosts = get_inventory_from_cmdb(keyword=keyword)
    return jsonify({
        'message': 'ok',
        'code': 0,
        'data': hosts,
    })
Exemple #2
0
def get_host_groups(user_id):
    current_user_id = login_user.get('user_id')
    # query = request.args
    # page = int(query.get('page', 1))
    # limit = int(query.get('pageSize', 20))
    # skip = (page - 1) * limit
    if current_user_id != user_id:
        return jsonify({'message': 'invalid user', 'code': 104030})

    tree = get_inventory_from_cmdb()

    return jsonify({
        'message': 'ok',
        'code': 0,
        'data': tree,
    })
Exemple #3
0
def get_inventory():
    query = request.args
    cmdb_type = query.get('type', 'cmdb')
    if cmdb_type == 'file':
        booke_id = query.get('book')
        book = db.collection('books').find_one({'_id': ObjectId(booke_id)})
        if not book:
            return jsonify({
                'message': 'invalid book',
                'code': 104041,
            }), 404

        hosts = get_inventory_by_book(book.get('_id'),
                                      book_name=book.get('name'))
    else:
        hosts = get_inventory_from_cmdb()

    return jsonify({
        'message': 'ok',
        'code': 0,
        'data': hosts,
    })
Exemple #4
0
def get_job(_id):
    username = login_user.get('username')
    if not _id:
        return jsonify({'message': 'invalid id', 'code': 154000}), 400

    job = Job.find_one({
        '_id': ObjectId(_id),
        'maintainer': {
            '$in': [username]
        }
    })

    # @todo job status
    if not job:
        return jsonify({
            'message': 'invalid id',
            'code': 154001,
        }), 400

    template = job.get('template')
    inventory_type = template.get('inventory_type')
    inventory = template.get('inventory')
    if job.get('type') == 'adhoc':
        inventory_content = parse_cmdb_inventory(inventory)
        return jsonify({
            'message': 'ok',
            'code': 0,
            'data': {
                'record': job,
                'previewContent': inventory_content,
            },
        })

    if inventory_type == 'file':
        inventory_content = parse_file_inventory(inventory)
    else:
        inventory_content = parse_cmdb_inventory(inventory)

    check_playbook(job['book_id'])
    if inventory_type == 'file':
        book = Book.find_one({'_id': ObjectId(job['book_id'])})
        if not book:
            hosts = []
        else:
            hosts = get_inventory_by_book(book.get('_id'),
                                          book_name=book.get('name'))
    else:
        hosts = get_inventory_from_cmdb()

    roles = []
    condition = {
        'book_id': str(job['book_id']),
        'role': 'roles',
        'is_dir': True
    }
    parent = Playbook.find_one(condition)
    if parent:
        where = {
            'book_id': job['book_id'],
            'is_dir': True,
            'parent': parent.get('path')
        }
        cursor = Playbook.find(where)
        roles = list(cursor)

    logs = None
    task = Task.find_one({'job_id': _id})
    if task:
        log = db.collection('logs').find_one({'task_id': str(task['_id'])})
        if log:
            logs = log.get('message')

    return jsonify({
        'message': 'ok',
        'code': 0,
        'data': {
            'record': job,
            'previewContent': inventory_content,
            'hosts': hosts,
            'roles': roles,
            'logs': logs,
        },
    })