def post(self, id, name): """ Restore snapshot """ current_identity = import_user() instance = Instance.query.get(id) lxdserver = Server.query.filter_by(name=instance.location).first() if instance.name and (id in current_identity.instances or current_identity.admin): try: app.logger.info('User: %s restoring snapshot on container %s', current_identity.username, instance.name) resx = lgw.lxd_api_get( lxdserver, 'instances/' + instance.name + '/snapshots/' + name) if resx: try: res = lgw.lxd_api_put(lxdserver, 'instances/' + instance.name, {'restore': name}) return {}, 204 except: api.abort(code=500, message='Error restoring snapshot') except: api.abort(code=404, message='Snapshot doesn\'t exists') api.abort(code=404, message='Instance doesn\'t exists')
def put(self, id, name, d=None): """ Update snapshot """ if d: data = d else: data = request.get_json()['data'] current_identity = import_user() instance = Instance.query.get(id) lxdserver = Server.query.filter_by(name=instance.location).first() if instance.name and (id in current_identity.instances or current_identity.admin): try: app.logger.info('User: %s updating snapshot on container %s', current_identity.username, instance.name) res = lgw.lxd_api_get( lxdserver, 'instances/' + instance.name + '/snapshots/' + name) r = res.json()['metadata'] if r['expires_at']: try: res = lgw.lxd_api_put( 'instances/' + instance.name + '/snapshots/' + name, {'expires_at': data['expires_at']}) return {}, 204 except: api.abort(code=500, message='Error deleting snapshot') except: api.abort(code=404, message='Snapshot doesn\'t exists') api.abort(code=404, message='Instance doesn\'t exists')
def put(self, id, d=None): """ :return """ if d: data = d else: data = request.get_json()['data'] #print(data) current_identity = import_user() try: # c = Instance.query.filter_by(name=name).first() # USE FOR QUERY BY NAME c = Instance.query.filter_by(id=id).first() lxdserver = Server.query.filter_by(name=c.location).first() if c and (c.id in current_identity.instances or current_identity.admin): app.logger.info('User: %s updating container %s state to %s', current_identity.username, c.name, data['action']) res = lgw.lxd_api_put(lxdserver, 'instances/' + c.name + '/state', data) # Delete redis cache redis_store.delete('server:' + lxdserver.name + ':instance:' + c.name + ':info') redis_store.delete('server:' + lxdserver.name + ':instance:' + c.name + ':state') #print(res.json()) return {'data': res.json()} else: api.abort(code=403, message='Unauthorized access') except: api.abort(code=404, message='Instance doesn\'t exists')
def put(self, server, alias, d=None): """ Update image """ if d: data = d else: data = request.get_json()['data'] lxdserver = Server.query.filter_by(name=server).first() app.logger.info('User: %s updating image alias %s', import_user().username, alias) res = lgw.lxd_api_put(lxdserver, 'images/aliases/' + alias, data=data) return res.json()['metadata']
def put(self, url, server, name, d=None): """ Update 'universal' """ if d: data = d else: data = request.get_json()['data'] lxdserver = Server.query.filter_by(name=server).first() app.logger.info('User: %s updating something on %s', import_user().username, url) res = lgw.lxd_api_put(lxdserver, url + '/' + name, data=data) return res.json()['metadata']
def post(self, id): """ Restart container :param id: :return data """ data = {'action': 'restart', 'timeout': 30} current_identity = import_user() try: # c = Container.query.filter_by(name=name).first() # USE FOR QUERY BY NAME c = Container.query.filter_by(id=id).first() if c and (c.id in current_identity.containers or current_identity.admin): res = lgw.lxd_api_put('containers/' + c.name + '/state', data) return res.json() else: api.abort(code=403, message='Unauthorized access') except: api.abort(code=404, message='Container doesn\'t exists')