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
|
"""
Database model for application
"""
from flask_sqlalchemy import SQLAlchemy
import requests
import yaml
db = SQLAlchemy()
host_classes = db.Table('host_classes',
db.Column('host_id', db.ForeignKey('host.id')),
db.Column('class_id', db.ForeignKey('puppet_class.id')))
# class HostClasses(db.Model):
# __tablename__ = 'host_classes'
# id = db.Column(db.Integer, primary_key=True)
# host_id = db.Column(db.Integer, db.ForeignKey('host.id'), nullable=False)
# class_id = db.Column(db.Integer, db.ForeignKey('puppet_class.id'), nullable=False)
class Host(db.Model):
__tablename__ = 'host'
id = db.Column(db.Integer, primary_key=True)
fqdn = db.Column(db.Text, nullable=False)
environment = db.Column(db.Text)
# classes = db.relationship('HostClasses', backref='host', lazy='dynamic')
classes = db.relationship('PuppetClass',
back_populates='hosts',
secondary=host_classes)
def serialize(self):
return { column.name: self.__getattribute__(column.name)
for column in self.__table__.columns }
class PuppetClass(db.Model):
__tablename__ = 'puppet_class'
id = db.Column(db.Integer, primary_key=True)
class_name = db.Column(db.Text, nullable=False)
source_file = db.Column(db.Text)
hosts = db.relationship('Host',
back_populates='classes',
secondary=host_classes)
|