diff --git a/app/models.py b/app/models.py index 350a0c3..61a535c 100644 --- a/app/models.py +++ b/app/models.py @@ -258,60 +258,64 @@ class Deployment(db.Model): pid = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.ForeignKey('users.pid')) #FK server_id = db.Column(db.ForeignKey('servers.pid')) #FK + date_created = db.Column(db.DateTime, default=datetime.utcnow) deleted = db.Column(db.Boolean, default=False) - enabled = db.Column(db.Boolean, default=True) warning = db.Column(db.Boolean, default=False) protected = db.Column(db.Boolean, default=False) #machines with this False will be autodeleted after the warning period is over. date_last_charge = db.Column(db.DateTime) + discount = db.Column(db.Integer) period = db.Column(db.Integer) daysleft = db.Column(db.Integer) - vlan = db.Column(db.Integer) machine_id = db.Column(db.BigInteger) #unit_id machine_alias = db.Column(db.String) #dns name machine_cpu = db.Column(db.Integer) machine_mem = db.Column(db.Integer) machine_hdd = db.Column(db.Integer) - discount = db.Column(db.Integer) - inv_addresses = db.relationship('Address', backref='assignee', lazy='dynamic') + inv_pubvlans = db.relationship('PubVLAN', backref='deploy', lazy='dynamic') + +class PubVLAN(db.Model): + __tablename__ = 'pubvlans' + pid = db.Column(db.Integer, primary_key=True) + deploy_id = db.Column(db.ForeignKey('deployments.pid')) #FK + vlan_id = db.Column(db.Integer) + pubaddr = db.relationship('Address', uselist=False, backref='assignee') class Address(db.Model): __tablename__ = 'address' pid = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.ForeignKey('users.pid')) #FK region_id = db.Column(db.ForeignKey('regions.pid')) #FK - deployment_id = db.Column(db.ForeignKey('deployments.pid')) #FK - date_assigned = db.Column(db.DateTime, default=datetime.utcnow) + pubvlan_id = db.Column(db.ForeignKey('pubvlans.pid')) #FK enabled = db.Column(db.Boolean) - ip = db.Column(db.String) - mac = db.Column(db.String) + #mac = db.Column(db.String) rdns = db.Column(db.String) 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, **kwargs): - super(Address, self).__init__(**kwargs) - if self.mac is None: - self.mac = self.genmac() + #def __init__(self, **kwargs): + # super(Address, self).__init__(**kwargs) + # if self.mac is None: + # self.mac = self.genmac() - def genmac(self): - alladdr = Address.query.all() - allmacs = [] - current_app.logger.info('populating mac addr pool') - for addr in alladdr: - allmacs.append(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 + #def genmac(self): + # alladdr = Address.query.all() + # allmacs = [] + # current_app.logger.info('populating mac addr pool') + # for addr in alladdr: + # allmacs.append(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 #MISC ITEMS class Service(db.Model): diff --git a/app/templates/admin/admin_cloud.html b/app/templates/admin/admin_cloud.html new file mode 100644 index 0000000..ae13a3a --- /dev/null +++ b/app/templates/admin/admin_cloud.html @@ -0,0 +1,7 @@ +