def upload_appliance(fpath): fname = os.path.basename(fpath) fsize = os.stat(fpath).st_size fhash = _md5sum(fpath) old = db.query(Appliance).filter_by(checksum=fhash).count() if old: logging.warning(_('%s already exists in LuoYunCloud DB.') % fpath) return users = [ db.query(User).get(1), db.query(User).filter_by(username='******').first(), None ] for user in users: if user and _isadmin(user): break catalog = db.query(ApplianceCatalog).order_by(ApplianceCatalog.id).first() if user: r = _save_upfile(fpath, fhash) if r: dpath = os.path.join(appdir, 'appliance_%s' % fhash) if os.path.exists(dpath): logging.warning(_('%s already exists !') % dpath) else: logging.error(r) return else: logging.debug(_('Save appliance %s success.') % fpath) new = Appliance(name=fname.replace('.', ' '), user=user, filesize=fsize, checksum=fhash) new.isprivate = False new.isuseable = True new.islocked = False new.catalog_id = catalog.id db.add(new) db.commit() logging.debug( _('Insert appliance to DB success, owner is %s') % user.username) else: logging.error(_('Have not found admin user, please check DB !'))
def target_url(self): # TODO: use reverse_url url = '' try: if ( self.target_type == 3 and db.query(Node).get(self.target_id) ): url = '/admin/node?id=%s&action=view' % self.target_id elif ( self.target_type == 4 and db.query(Instance).get(self.target_id) ): url = '/admin/instance/view?id=%s' % self.target_id except: pass if url: return '<a href="%s" target="_blank">%s</a>' % (url, self.target_id) else: return self.target_id
def upload_appliance(fpath): fname = os.path.basename(fpath) fsize = os.stat(fpath).st_size fhash = _md5sum(fpath) old = db.query(Appliance).filter_by(checksum = fhash).count() if old: logging.warning(_('%s already exists in LuoYunCloud DB.') % fpath) return users = [ db.query(User).get(1), db.query(User).filter_by(username='******').first(), None ] for user in users: if user and _isadmin(user): break catalog = db.query(ApplianceCatalog).order_by(ApplianceCatalog.id).first() if user: r = _save_upfile(fpath, fhash) if r: dpath = os.path.join(appdir, 'appliance_%s' % fhash) if os.path.exists(dpath): logging.warning(_('%s already exists !') % dpath) else: logging.error(r) return else: logging.debug(_('Save appliance %s success.') % fpath) new = Appliance( name = fname.replace('.', ' '), user = user, filesize = fsize, checksum = fhash ) new.isprivate = False new.isuseable = True new.islocked = False new.catalog_id = catalog.id db.add(new) db.commit() logging.debug(_('Insert appliance to DB success, owner is %s') % user.username) else: logging.error(_('Have not found admin user, please check DB !'))
def default_value(db): from app.auth.models import Group, Permission, User from yweb.locale import LANGUAGES from app.language.models import Language # languages for L in LANGUAGES: lang = db.query(Language).filter_by(codename=L['codename']).first() if lang: continue lang = Language(name=L['name'], name_en=L['name_en'], codename=L['codename']) db.add(lang) # Permission for codename, name in settings.default_permission: p = db.query(Permission).filter_by(codename=codename).first() if p: continue p = Permission(codename=codename, name=name) db.add(p) # Group for name in settings.default_group: g = db.query(Group).filter_by(name=name).first() if g: continue g = Group(name=name, islocked=True) db.add(g) # User for username, password in settings.default_user: u = db.query(User).filter_by(username=username).first() if u: continue enc_password = enc_login_passwd(password) u = User(username=username, password=enc_password) db.add(u) # User Group for groupname, username in settings.default_user_group: u = db.query(User).filter_by(username=username).first() g = db.query(Group).filter_by(name=groupname).first() if u and (g not in u.groups): u.groups.append(g) # Group Permission for groupname, codename in settings.default_group_permission: g = db.query(Group).filter_by(name=groupname).first() p = db.query(Permission).filter_by(codename=codename).first() if p not in g.permissions: g.permissions.append(p) db.commit()
def default_value(db): from app.auth.models import Group, Permission, User from yweb.locale import LANGUAGES from app.language.models import Language # languages for L in LANGUAGES: lang = db.query(Language).filter_by(codename = L['codename']).first() if lang: continue lang = Language( name = L['name'], name_en = L['name_en'], codename = L['codename'] ) db.add(lang) # Permission for codename, name in settings.default_permission: p = db.query(Permission).filter_by(codename = codename).first() if p: continue p = Permission(codename = codename, name = name) db.add(p) # Group for name in settings.default_group: g = db.query(Group).filter_by(name=name).first() if g: continue g = Group(name = name, islocked = True) db.add(g) # User for username, password in settings.default_user: u = db.query(User).filter_by(username=username).first() if u: continue enc_password = enc_login_passwd(password) u = User(username = username, password = enc_password) db.add(u) # User Group for groupname, username in settings.default_user_group: u = db.query(User).filter_by(username=username).first() g = db.query(Group).filter_by(name=groupname).first() if u and (g not in u.groups): u.groups.append(g) # Group Permission for groupname, codename in settings.default_group_permission: g = db.query(Group).filter_by(name=groupname).first() p = db.query(Permission).filter_by(codename=codename).first() if p not in g.permissions: g.permissions.append(p) db.commit()
def update_appliance_logo(): appliances = db.query(Appliance) for A in appliances: old_logo = os.path.join(A.logodir, 'alogo.png') if os.path.exists(old_logo): os.rename(old_logo, A._p_logo_raw) print A._p_logo_raw # else: # for test # if os.path.exists(A._p_logo): # os.rename(A._p_logo, old_logo) if os.path.exists(A._p_logo_raw): A.rebuild_logo() else: print 'NOT FOUND : ', A._p_logo_raw
instance_id = Column(ForeignKey("instance.id")) instance = relationship("Instance", backref=backref("static_ips", order_by=id)) created = Column(DateTime, default=datetime.now) updated = Column(DateTime, default=datetime.now) def __init__(self, ip, user, instance=None): self.ip = ip self.user_id = user.id if instance: self.instance_id = instance.id ERROR, OK = [], [] EXIST_ERROR, EXIST_OK = [], [] for x in db.query(IpAssign).all(): if x.instance_id: newip = db.query(IPPool).filter_by(ip=x.ip).first() if newip: if newip.instance_id: if newip.instance_id != x.instance_id: EXIST_ERROR.append((x.ip, newip.instance_id)) else: EXIST_OK.append((x.ip, newip.instance_id)) else: OK.append((x.ip, x.instance_id)) else: ERROR.append((x.ip, x.instance_id)) if ERROR:
def wiki_catalogs(): return db.query(WikiCatalog).all()
instance = relationship("Instance", backref=backref('static_ips', order_by=id)) created = Column(DateTime, default=datetime.now) updated = Column(DateTime, default=datetime.now) def __init__(self, ip, user, instance=None): self.ip = ip self.user_id = user.id if instance: self.instance_id = instance.id ERROR, OK = [], [] EXIST_ERROR, EXIST_OK = [], [] for x in db.query(IpAssign).all(): if x.instance_id: newip = db.query(IPPool).filter_by(ip=x.ip).first() if newip: if newip.instance_id: if newip.instance_id != x.instance_id: EXIST_ERROR.append((x.ip, newip.instance_id)) else: EXIST_OK.append((x.ip, newip.instance_id)) else: OK.append((x.ip, x.instance_id)) else: ERROR.append((x.ip, x.instance_id)) if ERROR: print 'The following ip->instance binding failed:'
def whois(self): if (self.who_id and db.query(User).get(self.who_id)): return self.who.username