From 402a5afdb5fc9b73daa3cd33400ede300d26b793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Mon, 8 Aug 2022 20:36:37 +0200 Subject: Rename some database stuff. --- pyenc/app/model.py | 59 +++++++++++++++++++----------------------------------- 1 file changed, 21 insertions(+), 38 deletions(-) (limited to 'pyenc/app/model.py') diff --git a/pyenc/app/model.py b/pyenc/app/model.py index f67cd10..c37cec3 100644 --- a/pyenc/app/model.py +++ b/pyenc/app/model.py @@ -23,7 +23,7 @@ host_classes = db.Table( # NOTE this is non-final, and might get removed shortly environment_classes = db.Table( 'environment_classes', - db.Column('environment_id', db.ForeignKey('puppet_environment.id'), primary_key=True), + db.Column('environment_id', db.ForeignKey('environment.id'), primary_key=True), db.Column('class_id', db.ForeignKey('puppet_class.id'), primary_key=True), ) @@ -32,25 +32,17 @@ class_files = db.Table( 'class_files', db.Column('class_id', db.ForeignKey('puppet_class.id'), primary_key=True), db.Column('file_id', db.ForeignKey('puppet_file.id'), primary_key=True), - db.UniqueConstraint('class_id', 'file_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 PuppetEnvironment(db.Model): +class Environment(db.Model): """ A puppet environment. An enviromnet is a collection of modules, but here we only keep the files of the modules, in PuppetFile. """ - __tablename__ = 'puppet_environment' + __tablename__ = 'environment' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.Text, nullable=False, unique=True) classes = db.relationship( @@ -60,6 +52,9 @@ class PuppetEnvironment(db.Model): hosts = db.relationship( 'Host', back_populates='environment') + files = db.relationship( + 'PuppetFile', + back_populates='environment') class Host(db.Model): @@ -75,9 +70,10 @@ class Host(db.Model): __tablename__ = 'host' id = db.Column(db.Integer, primary_key=True) fqdn = db.Column(db.Text, nullable=False, unique=True) - environment_id = db.Column(db.Integer, db.ForeignKey(f'{PuppetEnvironment.__tablename__}.id')) - environment = db.relationship('PuppetEnvironment', back_populates='hosts') - # classes = db.relationship('HostClasses', backref='host', lazy='dynamic') + + environment_id = db.Column(db.Integer, db.ForeignKey(f'{Environment.__tablename__}.id')) + environment = db.relationship('Environment', back_populates='hosts') + classes = db.relationship( 'PuppetClass', back_populates='hosts', @@ -95,19 +91,20 @@ class PuppetFile(db.Model): Keeps track of known puppet files. Each file contains 0 to many puppet classes. - Each file is uniquely identified by the pair (path, environment). + Each file is uniquely identified by the pair (path, environment_id). """ __tablename__ = 'puppet_file' id = db.Column(db.Integer, primary_key=True) - # Where we found the file (path inside environment) - # e.g. /etc/puppetlabs/code/environments// + # Where we found the file (path inside environment_id) + # e.g. /etc/puppetlabs/code/environments// path = db.Column(db.Text, nullable=False) - # Puppet environment this file belongs in - environment = db.Column(db.Integer, - db.ForeignKey(f'{PuppetEnvironment.__tablename__}.id'), - nullable=False) + # Puppet environment_id this file belongs in + environment_id = db.Column(db.Integer, + db.ForeignKey(f'{Environment.__tablename__}.id'), + nullable=False) + environment = db.relationship('Environment', back_populates='files') # Checksum of the content, should be usable as a key in PuppetFileContent checksum = db.Column(db.Text, nullable=False) @@ -121,7 +118,7 @@ class PuppetFile(db.Model): content = db.relationship('PuppetFileContent', backref='file') __table_args__ = ( - db.UniqueConstraint('path', 'environment'), + db.UniqueConstraint('path', 'environment_id'), ) @@ -145,20 +142,6 @@ class PuppetFileContent(db.Model): json = db.Column(db.Text, nullable=False) -# TODO class environment mappings? -# - the same class can exist in multiple environmentns -# - the same class in multiple environments might be different -# - the class can come or go when the file is changed (??) -# - when a node changes environment it still has its classes, but they -# refer to something else now - -# Possibly: -# nodes holds its list of classes as a list of strings -# I have tables which maps class names to files per environment - -# What happens when two different environments have separate classes -# which share a name - class PuppetClass(db.Model): """ A puppet class. @@ -168,14 +151,14 @@ class PuppetClass(db.Model): """ __tablename__ = 'puppet_class' id = db.Column(db.Integer, primary_key=True) - class_name = db.Column(db.Text, nullable=False, unique=True) + name = db.Column(db.Text, nullable=False, unique=True) hosts = db.relationship( 'Host', back_populates='classes', secondary=host_classes) environments = db.relationship( - 'PuppetEnvironment', + 'Environment', back_populates='classes', secondary=environment_classes) files = db.relationship( -- cgit v1.2.3