diff options
Diffstat (limited to 'lib/sunhpc/db/alchemy-bak/mappings/base.py')
-rw-r--r-- | lib/sunhpc/db/alchemy-bak/mappings/base.py | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/lib/sunhpc/db/alchemy-bak/mappings/base.py b/lib/sunhpc/db/alchemy-bak/mappings/base.py new file mode 100644 index 0000000..0191b06 --- /dev/null +++ b/lib/sunhpc/db/alchemy-bak/mappings/base.py @@ -0,0 +1,219 @@ +#coding:utf-8 +import sqlalchemy.ext.declarative +import sqlalchemy.orm +from sqlalchemy import * + +Base = sqlalchemy.ext.declarative.declarative_base() + +class SunhpcBase(object): + """Additional base class of Sunhpc ORM hierarchy which includes some + helper methods for all classes""" + + @property + def session(self): + """Singelton which return the session of the object""" + return sqlalchemy.orm.session.object_session(self) + + + def delete(self): + """instance method to autodelete the instance which calls it + + so you can use + node.delete()""" + self.session.delete(self) + + @classmethod + def loadOne(cls, session, **kwargs): + """ """ + return cls.load(session, **kwargs).one() + + @classmethod + def load(cls, session, **kwargs): + """ + this method allow us to run query on all the mapping objects + simply using + + e.g.:: + + node = Nodes.load(session, Name='compute-0-0', Cpus=2) + nic = Network.load(session, Name='compute-0-0', Interface='eth0') + + taken from: + http://petrushev.wordpress.com/2010/06/22/sqlalchemy-base-model/ + """ + q = session.query(cls) + filters = [getattr(cls, field_name)==kwargs[field_name] \ + for field_name in kwargs] + return q.filter(and_(*filters)) + +class Node(SunhpcBase, Base): + __tablename__ = 'nodes' + __table_args__ = {} + + ID = Column('ID', Integer, primary_key=True, nullable=False) + name = Column('Name', String(128)) + cpus = Column('CPUs', Integer, nullable=False, default=1) + rack = Column('Rack', Integer) + rank = Column('Rank', Integer) + arch = Column('Arch', String(32)) + os = Column('OS', Enum(u'linux', u'sunos'), nullable=False, default=u'linux') + alias = Column('Alias', String(128), default='') + flags = Column('Flags', String(128), default='') + status = Column('Status', String(128), default='os') + + networks = sqlalchemy.orm.relationship("Network", backref="nodes") + public_keys = sqlalchemy.orm.relationship("PublicKey", backref="nodes") + + def __repr__(self): + return "<Node(name='%s')>" % (self.name) + +class Network(SunhpcBase, Base): + __tablename__ = 'networks' + __table_args__ = {} + + ID = Column('ID', Integer, primary_key=True, nullable=False) + node = Column('Node', Integer, ForeignKey('nodes.ID')) + mac = Column('MAC', String(64)) + ip = Column('IP', String(32)) + name = Column('Name', String(128)) + device = Column('Device', String(32)) + subnet = Column('Subnet', Integer, ForeignKey('subnets.ID')) + +class Subnet(SunhpcBase, Base): + __tablename__ = 'subnets' + __table_args__ = {} + + ID = Column('ID', Integer, primary_key=True, nullable=False) + name = Column('name', String(32), nullable=False, unique=True) + dnszone = Column('dnszone', String(64), nullable=False, unique=True) + subnet = Column('subnet', String(32), nullable=False) + netmask = Column('netmask', String(32), nullable=False) + mtu = Column('mtu', Integer, default=1500) + servedns = Column('servedns', Boolean, default=False) + + networks = sqlalchemy.orm.relationship("Network", backref="subnets") + +class GlobalRoute(SunhpcBase, Base): + __tablename__ = 'globalroutes' + __table_args__ = {} + + #column definitions + gateway = Column('Gateway', String(32), nullable=False) + netmask = Column('Netmask', String(32), primary_key=True, nullable=False) + network = Column('Network', String(32), primary_key=True, nullable=False) + subnet = Column('Subnet', Integer, ForeignKey('subnets.ID')) + +class PublicKey(SunhpcBase, Base): + __tablename__ = 'publickeys' + __table_args__ = {} + + ID = Column('ID', Integer, primary_key=True, nullable=False) + node = Column('Node', Integer, ForeignKey('nodes.ID'), nullable=False) + public_key = Column('Public_Key', String(4096)) + description = Column('Description', String(4096)) + +class SecNode(SunhpcBase, Base): + __tablename__ = 'secnodes' + __table_args__ = {} + + #column definitions + attr = Column('Attr', String(128), primary_key=True, nullable=False) + enc = Column('Enc', String(64)) + node = Column('Node', Integer, primary_key=True, nullable=False) + value = Column('Value', TEXT()) + +class Attribute(SunhpcBase, Base): + __tablename__ = 'attributes' + __table_args__ = {} + + #column definitions + ID = Column('ID', Integer, primary_key=True, nullable=False) + attr = Column('Attr', String(128), nullable=False) + value = Column('Value', TEXT()) + shadow = Column('Shadow', TEXT()) + node = Column('Node', Integer, ForeignKey('nodes.ID'), nullable=False) + +class Firewall(SunhpcBase, Base): + __tablename__ = 'firewalls' + __table_args__ = {} + + ID = Column('ID', Integer, primary_key=True, nullable=False) + rulename = Column('Rulename', String(128), nullable=False) + service = Column('Service', String(256)) + protocol = Column('Protocol', String(256)) + ports = Column('Flags', String(256)) + action = Column('Action', String(256)) + comment = Column('Comment', String(256)) + node = Column('Node', Integer, ForeignKey('nodes.ID'), nullable=False) + +class Roll(SunhpcBase, Base): + __tablename__ = 'rolls' + __table_args__ = {} + + ID = Column('ID', Integer, primary_key=True, nullable=False) + name = Column('Name', String(128), nullable=False) + version = Column('Version', String(32), nullable=False) + arch = Column('Arch', String(32), nullable=False) + os = Column('OS', nullable=False, default=u'linux') + enabled = Column('Enabled', Enum(u'yes', u'no'), nullable=False, default=u'yes') + +class Bootaction(SunhpcBase, Base): + __tablename__ = 'bootactions' + __table_args__ = {} + + ID = Column('ID', Integer, primary_key=True, nullable=False) + action = Column('Action', String(256)) + kernel = Column('Kernel', String(256)) + ramdisk = Column('Ramdisk', String(256)) + args = Column('Args', String(1024)) + +class Distribution(SunhpcBase, Base): + __tablename__ = 'distributions' + __table_args__ = {} + + ID = Column('ID', Integer, primary_key=True, nullable=False) + name = Column('Name', String(32), nullable=False, default='') + os = Column('OS', String(32), nullable=False, default='') + Release = Column('Release', String(32), nullable=False, default='') + +class SecGlobal(SunhpcBase, Base): + __tablename__ = 'secglobals' + __table_args__ = {} + + attr = Column('Attr', String(128), primary_key=True, nullable=False) + enc = Column('Enc', String(64)) + value = Column('Value', TEXT()) + + +class Partition(SunhpcBase, Base): + __tablename__ = 'partitions' + __table_args__ = {} + + device = Column('Device', String(128), nullable=False) + formatFlags = Column('FormatFlags', String(128), nullable=False) + fsType = Column('FsType', String(128), nullable=False) + ID = Column('ID', Integer, primary_key=True, nullable=False) + mountpoint = Column('Mountpoint', String(128), nullable=False) + node = Column('Node', Integer, nullable=False) + partitionFlags = Column('PartitionFlags', String(128), nullable=False) + partitionID = Column('PartitionID', String(128), nullable=False) + partitionSize = Column('PartitionSize', String(128), nullable=False) + sectorStart = Column('SectorStart', String(128), nullable=False) + +class Machine(SunhpcBase, Base): + __tablename__ = 'machines' + __table_args__ = {} + + ID = Column('ID', Integer, primary_key=True, nullable=False) + node = Column('Node', Integer, nullable=False) + name = Column('Name', String(128), nullable=False) + vender = Column('Vender', String(128), nullable=False) + serial = Column('Serial', String(128), nullable=False) + cpus = Column('CPUs', Integer, nullable=False, default=1) + core = Column('Cores', Integer, nullable=False) + model = Column('Model', String(256), nullable=False) + memnumber = Column('MemNumber', Integer, nullable=False, default=1) + memsize = Column('MemSize', String(128), nullable=False) + + + |