2
# -*- coding: utf-8 -*-
4
__author__ = 'Jorge Niedbalski R. <jorge.niedbalski@canonical.com>'
6
from charmhelpers import fetch
11
fetch.apt_install("python-sqlalchemy")
13
from sqlalchemy import Column, Integer, String, DateTime
14
from sqlalchemy.ext.declarative import declarative_base
15
from sqlalchemy import create_engine
16
from sqlalchemy.orm import sessionmaker
17
from sqlalchemy.orm.exc import NoResultFound
23
DEFAULT_SQLITE_PATH = os.path.expanduser("~/.rsyslog-servers.db")
25
Base = declarative_base()
27
engine = create_engine('sqlite:///%s' % DEFAULT_SQLITE_PATH)
28
Session = sessionmaker(bind=engine)
33
__tablename__ = 'server'
35
id = Column(Integer, primary_key=True)
36
relation_id = Column(String(250), nullable=False)
37
created = Column(DateTime, default=datetime.datetime.now)
38
remote_unit = Column(String(250))
39
private_address = Column(String(250))
42
def remove(cls, relation_id):
44
server = session.query(Server).filter_by(
45
relation_id=relation_id).one()
46
session.delete(server)
53
def has_relation(cls, relation_id):
55
session.query(cls).filter_by(
56
relation_id=relation_id).one()
62
def get_or_create(cls, **params):
64
server = session.query(Server).filter_by(
65
relation_id=params.get('relation_id')).one()
67
server = cls(relation_id=params.get('relation_id'),
68
remote_unit=params.get('remote_unit'),
69
private_address=params.get('unit_private_ip'))
78
def setup_local_database():
79
Base.metadata.create_all(engine)
82
setup_local_database()