# -*- coding: utf-8 -*-
"""
Name: Puppet-Partner
Author: xnile
Author-email: xnile@qq.com
Description: Puppet-Partner is used to manage nodes and users for Puppet.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"""
from flask import Flask, request, session, redirect, url_for, abort, \
render_template, flash, jsonify
from flask.ext.paginate import Pagination
from sqlalchemy import create_engine, ForeignKeyConstraint
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker,relationship
from jinja2 import Environment, PackageLoader
import sys
import json
reload(sys)
sys.setdefaultencoding('utf8')
""" config """
DEBUG = True
SECRET_KEY = 'somekey'
JSONIFY_PRETTYPRINT_REGULAR = False
app = Flask(__name__)
app.config.from_object(__name__)
"""connecting"""
engine = create_engine('mysql+mysqldb://root:@localhost/puppet',echo=True)
Base = declarative_base(engine)
class Group(Base):
"""mapping"""
__tablename__ = 'puppet_groups'
__table_args__ = {'autoload':True}
class Users(Base):
"""maping and relationship"""
__tablename__ = 'puppet_users'
__table_args__ = (
ForeignKeyConstraint(['gid'], ['puppet_groups.gid']),
{'autoload':True,}
)
onetoone = relationship("Group")
def loadSession():
""""""
metadata = Base.metadata
Session = sessionmaker(bind=engine)
session = Session()
return session
def CreateConf():
""" Generate configuration files """
session = loadSession()
groups = session.query(Group).all()
for group in groups:
session = loadSession()
users = session.query(Users).filter(Users.gid==group.gid).all()
env = Environment(loader=PackageLoader('conf','templates'))
template = env.get_template('user.pp')
data = template.render(users=users,group=group)
f = open('conf/' + group.gname + '.pp','w')
f.write(data)
f.close()
@app.route('/')
def index():
""""""
CreateConf()
return render_template('index.html')
@app.route('/user_add',methods=['POST','GET'])
def user_add():
"""Add users"""
session = loadSession()
group = session.query(Group).all()
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
gid = int(request.form['gid'])
ed_group = Users(username=username,password=password,gid=gid)
session = loadSession()
session.add(ed_group)
session.commit()
return render_template('user_add.html',groups=group)
if __name__ == '__main__':
app.run(host='0.0.0.0',port=8080)
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com