diff --git a/app/models.py b/app/models.py index 437220a..eaa95ae 100644 --- a/app/models.py +++ b/app/models.py @@ -228,21 +228,20 @@ class Service(db.Model): pid = db.Column(db.Integer, primary_key=True) #PK user_id = db.Column(db.Integer, db.ForeignKey('users.pid')) #FK date_created = db.Column(db.DateTime, index=True, default=datetime.utcnow) - date_expire = db.Column(db.DateTime) + date_last_charge = db.Column(db.DateTime) + period = db.Column(db.Integer) enabled = db.Column(db.Boolean) - name = db.Column(db.String(64)) - image = db.Column(db.String(128)) + category = db.Column(db.String(64)) description = db.Column(db.Unicode(128)) - unit = db.Column(db.Integer) - unitprice = db.Column(db.Float) + price = db.Column(db.Float) class Deployment(db.Model): __tablename__ = 'deployments' pid = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.pid')) #FK date_created = db.Column(db.DateTime, index=True, default=datetime.utcnow) - date_expire = db.Column(db.DateTime) + date_last_charge = db.Column(db.DateTime) enabled = db.Column(db.Boolean) machine_id = db.Column(db.BigInteger) #cubeid @@ -293,21 +292,28 @@ class Address(db.Model): deploy_id = db.Column(db.Integer, db.ForeignKey('deployments.pid')) #FK ip = db.Column(db.String(64)) + mac = db.Column(db.String(128)) rdns = db.Column(db.String(256)) - macaddr = db.Column(db.String(128)) reserved = db.Column(db.Boolean, default=False) #this ip SHOULD NOT be listed as available to assign even if its not currently owned by anyone def __init__(self): - if self.macaddr is None: - self.macaddr = self.genmac() + if self.mac is None: + self.mac = self.genmac() def genmac(self): - alladdr = Address.query.all() - - mac = [ random.randint(0, 255) for x in range(0, 6) ] - mac[0] = (mac[0] & 0xfc) | 0x02 - mac = ''.join([ '{0:02x}'.format(x) for x in mac ]) - return mac + addr = Address.query.all() + allmacs = [] + for addr in alladdr: + allmacs.expand(str(addr.mac)) + while True: + mac = [ random.randint(0, 255) for x in range(0, 6) ] + mac[0] = (mac[0] & 0xfc) | 0x02 + mac = ''.join([ '{0:02x}'.format(x) for x in mac ]) + if mac in allmacs: + current_app.logger.warning('mac address {} is in the pool. regenerating...'.format(mac)) + continue + else: + return mac class Domain(db.Model): __tablename__ = 'domains' diff --git a/app/templates/admin/index.html b/app/templates/admin/index.html index 8877936..ef60b2d 100644 --- a/app/templates/admin/index.html +++ b/app/templates/admin/index.html @@ -83,7 +83,7 @@ {{ address.ip }} {{ address.rdns }} - {{ address.macaddr }} + {{ address.mac }} {{ address.owner.email }} {% endfor %} diff --git a/app/templates/vmanager/dashboard.html b/app/templates/vmanager/dashboard.html index a1260a2..cff971c 100644 --- a/app/templates/vmanager/dashboard.html +++ b/app/templates/vmanager/dashboard.html @@ -205,7 +205,7 @@ addEventListener("DOMContentLoaded", function() { {% for address in inv_addresses %} {{ address.ip }} - {{ address.macaddr }} + {{ address.mac }} {{ address.rdns }} soon... {% endfor %}