summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ogcp/og_server.py77
-rw-r--r--ogcp/views.py885
2 files changed, 257 insertions, 705 deletions
diff --git a/ogcp/og_server.py b/ogcp/og_server.py
index 872798e..6aeb20d 100644
--- a/ogcp/og_server.py
+++ b/ogcp/og_server.py
@@ -6,10 +6,22 @@
# (at your option) any later version.
from ogcp import app
+from flask import session, flash
+from flask_babel import _
import requests
import json
+class ServerError(Exception):
+ pass
+
+def flash_once(message, category='message'):
+ if '_flashes' not in session:
+ session['_flashes'] = []
+
+ if (category, message) not in session['_flashes']:
+ flash(message, category)
+
class OGServer:
def __init__(self, name, ip, port, api_token):
self.name = name
@@ -22,32 +34,57 @@ class OGServer:
self.URL = f'http://{self.ip}:{self.port}'
self.HEADERS = {'Authorization' : self.api_token}
- def get(self, path, payload=None):
+ def _log_http_status_code(self, res):
+ if res.status_code == 400:
+ err_msg = _('Invalid payload')
+ elif res.status_code == 404:
+ err_msg = _('Object not found')
+ elif res.status_code == 405:
+ err_msg = _('Method not allowed')
+ elif res.status_code == 409:
+ err_msg = _('Object already exists')
+ elif res.status_code == 423:
+ err_msg = _('Object in use')
+ elif res.status_code == 501:
+ err_msg = _('Cannot connect to database')
+ elif res.status_code == 507:
+ err_msg = _('Disk full')
+ else:
+ err_msg = _(f'Received status code {res.status_code}')
+
+ flash_once(err_msg, category='error')
+
+ def _request(self, method, path, payload, expected_status):
try:
- r = requests.get(f'{self.URL}{path}',
- headers=self.HEADERS,
- json=payload)
+ res = requests.request(
+ method,
+ f'{self.URL}{path}',
+ headers=self.HEADERS,
+ json=payload,
+ )
+ if res.status_code not in expected_status:
+ self._log_http_status_code(res)
+ raise ServerError
+ return res
+
except requests.exceptions.ConnectionError:
- return None
- return r
+ flash_once(_('Cannot connect to ogserver'), category='error')
+ except requests.exceptions.Timeout:
+ flash_once(_('Request to ogserver timed out'), category='error')
+ except requests.exceptions.TooManyRedirects:
+ flash_once(_('Too many redirects occurred while contacting ogserver'), category='error')
+ except requests.exceptions.RequestException as e:
+ flash_once(_('An error occurred while contacting ogserver: %(error)s', error=str(e)), category='error')
+ raise ServerError
+
+ def get(self, path, payload=None):
+ return self._request('GET', path, payload, expected_status={200})
def post(self, path, payload):
- try:
- r = requests.post(f'{self.URL}{path}',
- headers=self.HEADERS,
- json=payload)
- except requests.exceptions.ConnectionError:
- return None
- return r
+ return self._request('POST', path, payload, expected_status={200, 202})
def delete(self, path, payload):
- try:
- r = requests.delete(f'{self.URL}{path}',
- headers=self.HEADERS,
- json=payload)
- except requests.exceptions.ConnectionError:
- return None
- return r
+ return self._request('DELETE', path, payload, expected_status={200})
@property
def id(self):
diff --git a/ogcp/views.py b/ogcp/views.py
index 1049675..f6c1933 100644
--- a/ogcp/views.py
+++ b/ogcp/views.py
@@ -27,11 +27,12 @@ from pathlib import Path
from ogcp.models import User
from ogcp.forms.auth import LoginForm, UserForm, DeleteUserForm, EditUserForm
-from ogcp.og_server import OGServer, servers
+from ogcp.og_server import OGServer, servers, ServerError
from flask_babel import lazy_gettext as _l
from flask_babel import gettext, _
from ogcp import app, ogcp_cfg_path
from wtforms import StringField
+from functools import wraps
import unicodedata
import ipaddress
import requests
@@ -93,11 +94,16 @@ login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'
-class ServerError(Exception):
- pass
-
-class ServerErrorCode(Exception):
- pass
+def handle_server_errors(redirect_endpoint):
+ def decorator(view_func):
+ @wraps(view_func)
+ def wrapper(*args, **kwargs):
+ try:
+ return view_func(*args, **kwargs)
+ except ServerError:
+ return redirect(url_for(redirect_endpoint))
+ return wrapper
+ return decorator
def split_csv(s):
return re.split(r'\s*,\s*', s)
@@ -130,31 +136,6 @@ def remove_accents(text):
normalized_text = unicodedata.normalize('NFD', text)
return ''.join(c for c in normalized_text if unicodedata.category(c) != 'Mn')
-def ogserver_down(view):
- flash(_('Cannot talk to ogserver. Is ogserver down?'), category='error')
- return redirect(url_for(view))
-
-def ogserver_error(res, view):
- if res.status_code == 400:
- err_msg = _('Error 400: invalid payload')
- elif res.status_code == 404:
- err_msg = _('Error 404: object not found')
- elif res.status_code == 405:
- err_msg = _('Error 405: method not allowed')
- elif res.status_code == 409:
- err_msg = _('Error 409: object already exists')
- elif res.status_code == 423:
- err_msg = _('Error 423: object in use')
- elif res.status_code == 501:
- err_msg = _('Error 501: cannot connect to database')
- elif res.status_code == 507:
- err_msg = _('Error 500: disk full')
- else:
- err_msg = _(f'Received status code {res.status_code}')
-
- flash(err_msg, category='error')
- return redirect(url_for(view))
-
def validate_elements(elements, min_len=1, max_len=float('inf')):
valid = True
if len(elements) < min_len:
@@ -178,10 +159,6 @@ def parse_elements(checkboxes_dict):
def client_setup_add_image_names(server, setup_data):
r = server.get('/images')
- if not r:
- raise ServerError
- if r.status_code != requests.codes.ok:
- raise ServerErrorCode
images = r.json()['images']
@@ -201,17 +178,10 @@ def get_client_setup(ip):
payload = {'clients': [ip]}
r = server.post('/refresh', payload)
- if not r:
- raise ServerError
- if r.status_code != requests.codes.ok:
- raise ServerErrorCode
payload = {'client': [ip]}
r = server.get('/client/setup', payload)
- if not r:
- raise ServerError
- if r.status_code != requests.codes.ok:
- raise ServerErrorCode
+
db_partitions = r.json()['partitions']
res = {}
for partition in db_partitions:
@@ -256,12 +226,7 @@ def get_clients(state_filter=None):
def get_repository(repository_id, server):
- try:
- repositories = get_repositories(server)
- except ServerError:
- raise ServerError
- except ServerErrorCode:
- raise ServerErrorCode
+ repositories = get_repositories(server)
[repository] = [repository for repository in repositories
if repository['id'] == repository_id]
return repository
@@ -269,10 +234,6 @@ def get_repository(repository_id, server):
def get_repositories(server):
r = server.get('/repositories')
- if not r:
- raise ServerError
- if r.status_code != requests.codes.ok:
- raise ServerErrorCode
repositories = r.json()['repositories']
return repositories
@@ -342,11 +303,6 @@ def multi_request(method, uri, payload=None):
else:
raise Exception('Invalid method, use get or post')
- if not r:
- continue
- if r.status_code != requests.codes.ok:
- continue
-
response['server'] = server
response['json'] = r.json()
responses.append(response)
@@ -510,13 +466,9 @@ def server_error(error):
def image_modified_date_from_str(image):
return datetime.datetime.strptime(image['modified'], '%a %b %d %H:%M:%S %Y')
-@app.route('/')
-def index():
- if not current_user.is_authenticated:
- return redirect(url_for('login'))
-
- images_response = multi_request('get', '/images')
+def get_dashboard_data():
dashboard_servers = {}
+ images_response = multi_request('get', '/images')
for i in images_response:
server_name = i['server'].name
server_id = i['server'].id
@@ -556,7 +508,6 @@ def index():
time_dict = {'now': now, 'boot': boot, 'start': start}
dashboard_servers[server_id]['time_dict'] = time_dict
else:
- timestamp = datetime.datetime.today()
dashboard_servers[server.id] = {}
dashboard_servers[server.id]['online'] = False
dashboard_servers[server.id]['name'] = server.name
@@ -571,7 +522,18 @@ def index():
for i in clients_response:
server_id = i['server'].id
dashboard_servers[server_id]['clients'] = i['json']['clients']
+ return dashboard_servers
+
+@app.route('/')
+def index():
+ if not current_user.is_authenticated:
+ return redirect(url_for('login'))
+ try:
+ dashboard_servers = get_dashboard_data()
+ except ServerError:
+ dashboard_servers = {}
+ timestamp = datetime.datetime.today()
now = timestamp.strftime('%Y-%m-%d %H:%M:%S')
return render_template('dashboard.html', servers=dashboard_servers, now=now, colsize="6")
@@ -602,7 +564,10 @@ def logout():
@app.route('/scopes/status')
@login_required
def scopes_status():
- scopes, _clients = get_scopes()
+ try:
+ scopes, _clients = get_scopes()
+ except ServerError:
+ scopes = {}
return jsonify(scopes)
@@ -612,7 +577,10 @@ def get_client_mac():
ip = parse_elements(request.args.to_dict())
payload = {'client': list(ip)}
server = get_server_from_clients(list(ip))
- resp = server.get('/client/info', payload)
+ try:
+ resp = server.get('/client/info', payload)
+ except ServerError:
+ return {}
client_info = resp.json()
mac = client_info.get('mac')
pretty_mac = prettify_mac(mac)
@@ -645,6 +613,7 @@ def get_server_data_from_scopes(scopes, clients):
return servers_data
@app.route('/client/list', methods=['GET'])
+@handle_server_errors('index')
@login_required
def client_list():
scopes, clients = get_scopes()
@@ -660,10 +629,15 @@ def client_list():
@app.route('/scopes/')
@login_required
def scopes():
- scopes, clients = get_scopes()
+ try:
+ scopes, clients = get_scopes()
+ except ServerError:
+ scopes = {}
+ clients = {}
return render_template('scopes.html', scopes=scopes, clients=clients)
@app.route('/action/poweroff', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_poweroff():
form = GenericForm(request.form)
@@ -675,10 +649,6 @@ def action_poweroff():
payload = {'clients': ips}
server = get_server_from_clients(ips)
r = server.post('/poweroff', payload)
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
flash(_('Client powered off successfully'), category='info')
return redirect(url_for('commands'))
@@ -696,6 +666,7 @@ def action_poweroff():
@app.route('/action/wol', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_wol():
form = WOLForm(request.form)
@@ -751,6 +722,7 @@ def get_common_disk_data(ips):
return disk_data
@app.route('/action/setup/select', methods=['GET'])
+@handle_server_errors('commands')
@login_required
def action_setup_select():
args = request.args.copy()
@@ -770,10 +742,6 @@ def action_setup_select():
client_choices = []
for ip in ips:
r = server.get('/client/info', payload={'client': [ip]})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
client_name = r.json()['name']
client_choices.append((ip, f"{client_name} ({ip})"))
@@ -791,6 +759,7 @@ def action_setup_select():
@app.route('/action/setup', methods=['GET'])
+@handle_server_errors('commands')
@login_required
def action_setup_show():
args = request.args.copy()
@@ -804,12 +773,7 @@ def action_setup_show():
ips = set(args['ips'].split(' '))
base_client = args['selected_client']
- try:
- setup_data = get_client_setup(base_client)
- except ServerError:
- return ogserver_down('commands')
- except ServerErrorCode:
- return ogserver_error(r, 'commands')
+ setup_data = get_client_setup(base_client)
if not setup_data:
flash(_('Partition information is not available. Boot client in ogLive mode to obtain it'), category='error')
@@ -843,6 +807,7 @@ def action_setup_show():
scopes=scopes)
@app.route('/action/setup', methods=['POST'])
+@handle_server_errors('commands')
@login_required
def action_setup_modify():
form = SetupForm(request.form)
@@ -908,10 +873,6 @@ def action_setup_modify():
server = get_server_from_clients(list(ips))
r = server.post('/setup', payload=payload)
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
flash(_(f'Setup command sent sucessfully'), category='info')
return redirect(url_for('commands'))
@@ -925,10 +886,6 @@ def filter_images_allowed_in_center(server, images, center_id):
res = []
for image in images:
r = server.get('/image/restrict', {'image': image['id']})
- if not r:
- raise ServerError
- if r.status_code != requests.codes.ok:
- raise ServerErrorCode
allowed_scopes = r.json().get('scopes')
if not allowed_scopes or center_id in allowed_scopes:
res.append(image)
@@ -936,10 +893,6 @@ def filter_images_allowed_in_center(server, images, center_id):
def get_images_from_repo(server, repo_id):
r = server.get('/images')
- if not r:
- raise ServerError
- if r.status_code != requests.codes.ok:
- raise ServerErrorCode
images = r.json()['images']
res=[]
for image in images:
@@ -957,10 +910,6 @@ def get_clients_repo(server, ips):
repo_id=None
for ip in ips:
r = server.get('/client/info', payload={'client': [ip]})
- if not r:
- raise ServerError
- if r.status_code != requests.codes.ok:
- raise ServerErrorCode
repo_id_aux = r.json()['repo_id']
if repo_id is None:
repo_id = repo_id_aux
@@ -1040,6 +989,7 @@ class PartitionCollection:
return self.clients[idx]
@app.route('/action/image/restore', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_image_restore():
form = ImageRestoreForm(request.form)
@@ -1055,10 +1005,6 @@ def action_image_restore():
image_id = form.image.data
server = get_server_from_clients(ips)
r = server.get('/images')
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
images_list = r.json()['images']
image = search_image(images_list, int(image_id))
@@ -1073,10 +1019,6 @@ def action_image_restore():
return redirect(url_for('commands'))
r = server.get('/cache/list', payload={'clients': ips})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
clients_info = r.json()['clients']
@@ -1092,10 +1034,6 @@ def action_image_restore():
'profile': str(image['software_id']),
'id': str(image['id'])}
r = server.post('/image/restore', payload)
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
flash(_(f'Image restore command sent sucessfully'), category='info')
return redirect(url_for('commands'))
else:
@@ -1108,28 +1046,19 @@ def action_image_restore():
server = get_server_from_clients(ips)
- try:
- repo_id = get_clients_repo(server, ips)
- except ServerError:
- return ogserver_down('commands')
- except ServerErrorCode:
- return ogserver_error(r, 'commands')
+ repo_id = get_clients_repo(server, ips)
if repo_id is None:
flash(_(f'Computers have different repos assigned'), category='error')
return redirect(url_for('commands'))
- try:
- images = get_images_from_repo(server, repo_id)
- if not images:
- flash(_(f'Computer(s) assigned to a repo with no images'), category='error')
- return redirect(url_for('commands'))
+ images = get_images_from_repo(server, repo_id)
+
+ if not images:
+ flash(_(f'Computer(s) assigned to a repo with no images'), category='error')
+ return redirect(url_for('commands'))
- images = filter_images_allowed_in_center(server, images, center_id)
- except ServerError:
- return ogserver_down('commands')
- except ServerErrorCode:
- return ogserver_error(r, 'commands')
+ images = filter_images_allowed_in_center(server, images, center_id)
sort_images(images)
@@ -1142,10 +1071,6 @@ def action_image_restore():
for ip in ips:
r = server.get('/client/setup', payload={'client': [ip]})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
has_cache = False
@@ -1203,6 +1128,7 @@ def action_image_restore():
scopes=scopes)
@app.route('/action/hardware', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_hardware():
form = HardwareForm(request.form)
@@ -1210,10 +1136,6 @@ def action_hardware():
ips = form.ips.data.split(' ')
server = get_server_from_clients(ips)
r = server.post('/hardware', payload={'clients': ips})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
flash(_(f'Hardware inventory command sent sucessfully'), category='info')
return redirect(url_for('commands'))
else:
@@ -1225,16 +1147,13 @@ def action_hardware():
form.ips.data = ' '.join(ips)
server = get_server_from_clients(ips)
r = server.get('/hardware', payload={'client': list(ips)})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
hardware = r.json()['hardware']
return render_template('actions/hardware.html', form=form,
hardware=hardware, scopes=scopes)
@app.route('/action/software', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_software():
form = SoftwareForm(request.form)
@@ -1244,12 +1163,8 @@ def action_software():
server = get_server_from_clients(ips)
if form.view.data:
r = server.get('/software', payload={'client': ips,
- 'disk': int(disk),
- 'partition': int(partition)})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
+ 'disk': int(disk),
+ 'partition': int(partition)})
software = r.json()['software']
scopes, clients = get_scopes(set(ips))
@@ -1259,10 +1174,6 @@ def action_software():
r = server.post('/software', payload={'clients': ips,
'disk': disk,
'partition': partition})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
flash(_('Software profile request sent successfully'), category='info')
else:
flash(_('Error processing software profile form'), category='error')
@@ -1276,10 +1187,6 @@ def action_software():
form.ips.data = ' '.join(ips)
server = get_server_from_clients(ips)
r = server.get('/client/setup', payload={'client': list(ips)})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
if not r.json()['partitions']:
flash(_('Software inventory is not available. Boot client in ogLive mode to obtain it'), category='error')
@@ -1295,6 +1202,7 @@ def action_software():
return render_template('actions/software.html', form=form, scopes=scopes)
@app.route('/action/session', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_session():
form = SessionForm(request.form)
@@ -1304,10 +1212,6 @@ def action_session():
server = get_server_from_clients(list(ips))
r = server.get('/session', payload={'clients': ips})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
sessions = r.json()['sessions']
if not sessions:
@@ -1332,10 +1236,6 @@ def action_session():
r = server.post('/session', payload={'clients': valid_ips,
'disk': str(disk),
'partition': str(partition)})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
if excluded_ips:
flash('The following clients didn\'t match the boot configuration: ' + str(excluded_ips))
return redirect(url_for('commands'))
@@ -1352,10 +1252,6 @@ def action_session():
form.ips.data = ' '.join(ips_list)
r = server.get('/session', payload={'clients': ips_list})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
sessions = r.json()['sessions']
if not sessions:
@@ -1388,6 +1284,7 @@ def action_session():
scopes=scopes, os_groups=os_groups)
@app.route('/action/cache', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_client_cache():
form = CacheForm(request.form)
@@ -1413,10 +1310,6 @@ def action_client_cache():
r = server.post('/cache/delete',
payload={'clients': client_list,
'images': image_list})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
flash(_('Cache delete request sent successfully'), category='info')
return redirect(url_for('commands'))
else:
@@ -1429,10 +1322,6 @@ def action_client_cache():
server = get_server_from_clients(ips_list)
r = server.get('/cache/list', payload={'clients': ips_list})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
clients_info = r.json()['clients']
@@ -1462,6 +1351,7 @@ def action_client_cache():
client_images=client_images)
@app.route('/action/cache/fetch', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_image_fetch():
form = ImageFetchForm(request.form)
@@ -1472,10 +1362,6 @@ def action_image_fetch():
image_id = form.image.data
server = get_server_from_clients(ips)
r = server.get('/images')
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
images_list = r.json()['images']
image = search_image(images_list, int(image_id))
@@ -1484,10 +1370,6 @@ def action_image_fetch():
return redirect(url_for('commands'))
r = server.get('/cache/list', payload={'clients': ips})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
clients_info = r.json()['clients']
@@ -1500,10 +1382,6 @@ def action_image_fetch():
'image': image['name']}
r = server.post('/cache/fetch', payload=payload)
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
flash(_('Cache fetch request sent successfully'), category='info')
return redirect(url_for('commands'))
else:
@@ -1519,28 +1397,18 @@ def action_image_fetch():
server = get_server_from_clients(ips)
- try:
- repo_id = get_clients_repo(server, ips)
- except ServerError:
- return ogserver_down('commands')
- except ServerErrorCode:
- return ogserver_error(r, 'commands')
+ repo_id = get_clients_repo(server, ips)
if repo_id is None:
flash(_(f'Computers have different repos assigned'), category='error')
return redirect(url_for('commands'))
- try:
- images = get_images_from_repo(server, repo_id)
+ images = get_images_from_repo(server, repo_id)
- if not images:
- flash(_(f'Computer(s) assigned to a repo with no images'), category='error')
- return redirect(url_for('commands'))
+ if not images:
+ flash(_(f'Computer(s) assigned to a repo with no images'), category='error')
+ return redirect(url_for('commands'))
- images = filter_images_allowed_in_center(server, images, center_id)
- except ServerError:
- return ogserver_down('commands')
- except ServerErrorCode:
- return ogserver_error(r, 'commands')
+ images = filter_images_allowed_in_center(server, images, center_id)
sort_images(images)
@@ -1554,6 +1422,7 @@ def action_image_fetch():
scopes=scopes)
@app.route('/action/client/info', methods=['GET'])
+@handle_server_errors('commands')
@login_required
def action_client_info():
form = ClientDetailsForm()
@@ -1565,10 +1434,6 @@ def action_client_info():
payload = {'client': list(ips)}
r = server.get('/client/info', payload)
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
db_client = r.json()
@@ -1586,12 +1451,7 @@ def action_client_info():
form.remote.render_kw = {'readonly': True}
form.maintenance.data = db_client['maintenance']
form.maintenance.render_kw = {'readonly': True}
- try:
- repositories = get_repositories(server)
- except ServerError:
- return ogserver_down('commands')
- except ServerErrorCode:
- return ogserver_error(r, 'commands')
+ repositories = get_repositories(server)
form.repo.choices = [(repo["id"], repo["name"]) for repo in repositories
if db_client['repo_id'] == repo["id"]]
form.repo.render_kw = {'readonly': True}
@@ -1601,10 +1461,6 @@ def action_client_info():
form.boot.render_kw = {'readonly': True}
r = server.get('/scopes')
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
rooms = parse_scopes_from_tree(r.json(), 'room')
rooms = [(room['id'], room['name']) for room in rooms
@@ -1614,13 +1470,8 @@ def action_client_info():
form.submit.render_kw = {"style": "visibility:hidden;"}
ip = list(ips)[0]
- try:
- setup_data = get_client_setup(ip)
- client_setup_add_image_names(server, setup_data)
- except ServerError:
- return ogserver_down('commands')
- except ServerErrorCode:
- return ogserver_error(r, 'commands')
+ setup_data = get_client_setup(ip)
+ client_setup_add_image_names(server, setup_data)
disk_form = SetupForm()
selected_disk = 1
@@ -1628,10 +1479,6 @@ def action_client_info():
disk_form.disk.data = selected_disk
r = server.get('/cache/list', payload={'clients': [ip]})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
clients_info = r.json()['clients']
@@ -1646,10 +1493,6 @@ def action_client_info():
get_cache_info(clients_info, storage_data, images_data, client_images)
r = server.get('/efi', payload={'clients': [ip]})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
efi_data = r.json()['clients'][0]
@@ -1666,6 +1509,7 @@ def action_client_info():
efi_data=efi_data)
@app.route('/action/client/update', methods=['GET', 'POST'])
+@handle_server_errors('scopes')
@login_required
def action_client_update():
form = ClientDetailsForm(request.form)
@@ -1696,13 +1540,8 @@ def action_client_update():
"mac": mac_address }
server = get_server_from_ip_port(form.server.data)
r = server.post('/client/update', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- flash(_('ogServer: error updating client'),
- category='error')
- else:
- flash(_('Client updated successfully'), category='info')
+
+ flash(_('Client updated successfully'), category='info')
return redirect(url_for("scopes"))
else:
ips = parse_elements(request.args.to_dict())
@@ -1714,10 +1553,6 @@ def action_client_update():
payload = {'client': list(ips)}
r = server.get('/client/info', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'scopes')
db_client = r.json()
@@ -1733,10 +1568,6 @@ def action_client_update():
current_mode = db_client['boot']
r = server.get('/mode')
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'scopes')
available_modes = [(current_mode, current_mode)]
available_modes.extend([(mode, mode) for mode in r.json()['modes']
@@ -1745,10 +1576,6 @@ def action_client_update():
form.boot.render_kw = {'readonly': True}
r = server.get('/scopes')
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'scopes')
room_id = db_client['room']
rooms = parse_scopes_from_tree(r.json(), 'room')
@@ -1757,24 +1584,14 @@ def action_client_update():
form.room.choices = list(rooms)
form.room.render_kw = {'readonly': True}
- try:
- repositories = get_repositories(server)
- except ServerError:
- return ogserver_down('scopes')
- except ServerErrorCode:
- return ogserver_error(r, 'scopes')
+ repositories = get_repositories(server)
form.repo.choices = [(repo["id"], repo["name"]) for repo in repositories
if db_client['repo_id'] == repo["id"]]
form.repo.choices.extend([(repo["id"], repo["name"]) for repo in repositories
if db_client['repo_id'] != repo["id"]])
ip = list(ips)[0]
- try:
- setup_data = get_client_setup(ip)
- client_setup_add_image_names(server, setup_data)
- except ServerError:
- return ogserver_down('scopes')
- except ServerErrorCode:
- return ogserver_error(r, 'scopes')
+ setup_data = get_client_setup(ip)
+ client_setup_add_image_names(server, setup_data)
disk_form = SetupForm()
selected_disk = 1
@@ -1804,6 +1621,7 @@ def find_folder(folder_id, scopes):
return None
@app.route('/action/folder/delete', methods=['GET', 'POST'])
+@handle_server_errors('scopes')
@login_required
def action_folder_delete():
form = FolderForm(request.form)
@@ -1811,13 +1629,7 @@ def action_folder_delete():
payload = {"id": int(form.folder_id.data)}
server = get_server_from_ip_port(form.server.data)
r = server.post('/folder/delete', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- flash(_('ogServer: error deleting folder'),
- category='error')
- else:
- flash(_('Folder deleted successfully'), category='info')
+ flash(_('Folder deleted successfully'), category='info')
return redirect(url_for("scopes"))
else:
params = request.args.to_dict()
@@ -1838,6 +1650,7 @@ def action_folder_delete():
parent="scopes.html", scopes=scopes, ancestors=ancestors, children=children)
@app.route('/action/folder/update', methods=['GET','POST'])
+@handle_server_errors('scopes')
def action_folder_update():
form = FolderForm(request.form)
if request.method == 'POST':
@@ -1846,13 +1659,7 @@ def action_folder_update():
server = get_server_from_ip_port(form.server.data)
r = server.post('/folder/update', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- flash(_('ogServer: error updating folder'),
- category='error')
- else:
- flash(_('Folder updated successfully'), category='info')
+ flash(_('Folder updated successfully'), category='info')
return redirect(url_for("scopes"))
else:
params = request.args.to_dict()
@@ -1872,6 +1679,7 @@ def action_folder_update():
parent="scopes.html", scopes=scopes)
@app.route('/action/folder/add', methods=['GET'])
+@handle_server_errors('scopes')
@login_required
def action_folder_add():
form = FolderForm()
@@ -1896,6 +1704,7 @@ def action_folder_add():
parent="scopes.html", scopes=scopes)
@app.route('/action/folder/add', methods=['POST'])
+@handle_server_errors('scopes')
def action_folder_add_post():
form = FolderForm(request.form)
payload = {"name": form.name.data}
@@ -1906,16 +1715,11 @@ def action_folder_add_post():
server = get_server_from_ip_port(form.server.data)
r = server.post('/folder/add', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- flash(_('ogServer: error adding folder'),
- category='error')
- else:
- flash(_('Folder added successfully'), category='info')
+ flash(_('Folder added successfully'), category='info')
return redirect(url_for("scopes"))
@app.route('/action/client/add', methods=['GET', 'POST'])
+@handle_server_errors('scopes')
@login_required
def action_client_add():
form = ClientDetailsForm(request.form)
@@ -1958,13 +1762,7 @@ def action_client_add():
server = get_server_from_ip_port(form.server.data)
r = server.post('/client/add', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- flash(_('ogServer: error adding client'),
- category='error')
- else:
- flash(_('Client added successfully'), category='info')
+ flash(_('Client added successfully'), category='info')
return redirect(url_for("scopes"))
else:
params = request.args.to_dict()
@@ -1974,10 +1772,6 @@ def action_client_add():
form.server.data = params['scope-server']
server = get_server_from_ip_port(params['scope-server'])
r = server.get('/mode')
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'scopes')
available_modes = [(mode, mode) for mode in r.json()['modes'] if mode == 'pxe']
available_modes.extend([(mode, mode) for mode in r.json()['modes'] if mode != 'pxe'])
@@ -1986,10 +1780,6 @@ def action_client_add():
form.mac.render_kw = {'placeholder': 'aa:bb:cc:dd:ee:aa'}
r = server.get('/scopes')
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'scopes')
room_id = params['scope-room']
rooms = parse_scopes_from_tree(r.json(), 'room')
@@ -1998,12 +1788,7 @@ def action_client_add():
form.room.choices = list(rooms)
form.room.render_kw = {'readonly': True}
- try:
- repositories = get_repositories(server)
- except ServerError:
- return ogserver_down('scopes')
- except ServerErrorCode:
- return ogserver_error(r, 'scopes')
+ repositories = get_repositories(server)
form.repo.choices = [(repo["id"], repo["name"]) for repo in repositories]
if params.get('folder'):
@@ -2038,6 +1823,7 @@ def get_client_move_choices(scopes):
return choices
@app.route('/action/client/move', methods=['GET', 'POST'])
+@handle_server_errors('scopes')
@login_required
def action_client_move():
form = ClientMoveForm(request.form)
@@ -2053,14 +1839,7 @@ def action_client_move():
"folder_id": int(folder_id)}
server = get_server_from_clients(ips)
r = server.post('/client/move', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- flash(_('ogServer: error moving client'),
- category='error')
- else:
- flash(_('Client moved successfully'),
- category='info')
+ flash(_('Client moved successfully'), category='info')
return redirect(url_for('scopes'))
else:
ips = parse_elements(request.args.to_dict())
@@ -2082,6 +1861,7 @@ PLACEHOLDER_CLIENT_IMPORT_TEXT = '''client_name1,94:c6:91:a6:25:1a,10.141.10.100
client_name2,94:c6:91:a6:25:1b,10.141.10.101'''
@app.route('/action/clients/import', methods=['GET'])
+@handle_server_errors('scopes')
@login_required
def action_clients_import_get():
params = request.args.to_dict()
@@ -2093,10 +1873,6 @@ def action_clients_import_get():
form.server.data = params['scope-server']
server = get_server_from_ip_port(params['scope-server'])
r = server.get('/scopes')
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'scopes')
rooms = parse_scopes_from_tree(r.json(), 'room')
selected_room_id = params['scope-room']
@@ -2104,12 +1880,7 @@ def action_clients_import_get():
for room in rooms if room['id'] == int(selected_room_id)]
form.room.choices = selected_room
form.room.render_kw = {'readonly': True}
- try:
- repositories = get_repositories(server)
- except ServerError:
- return ogserver_down('scopes')
- except ServerErrorCode:
- return ogserver_error(r, 'scopes')
+ repositories = get_repositories(server)
form.repo.choices = [(repo["id"], repo["name"]) for repo in repositories]
form.client_conf.render_kw = {'placeholder': PLACEHOLDER_CLIENT_IMPORT_TEXT}
@@ -2127,6 +1898,7 @@ OG_CLIENT_DEFAULT_REMOTE = False
@app.route('/action/clients/import', methods=['POST'])
+@handle_server_errors('scopes')
@login_required
def action_clients_import_post():
form = ImportClientsForm(request.form)
@@ -2178,13 +1950,7 @@ def action_clients_import_post():
for client in clients:
for key, value in client.items():
payload[key] = value
- resp = server.post('/client/add', payload)
-
- if resp.status_code != requests.codes.ok:
- flash(_('ogServer: error adding client {}').format(client['name']),
- category='error')
- return redirect(url_for('scopes'))
-
+ res = server.post('/client/add', payload)
flash(_('Clients imported successfully'), category='info')
return redirect(url_for('scopes'))
@@ -2204,6 +1970,7 @@ def get_selected_clients(scopes):
return selected_clients
@app.route('/action/client/delete', methods=['GET', 'POST'])
+@handle_server_errors('scopes')
@login_required
def action_client_delete():
form = GenericForm(request.form)
@@ -2215,14 +1982,7 @@ def action_client_delete():
payload = {'clients': ips}
server = get_server_from_clients(ips)
r = server.post('/client/delete', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- flash(_('ogServer: error deleting client'),
- category='error')
- else:
- flash(_('Client deleted successfully'),
- category='info')
+ flash(_('Client deleted successfully'), category='info')
return redirect(url_for('scopes'))
else:
ips = parse_elements(request.args.to_dict())
@@ -2237,6 +1997,7 @@ def action_client_delete():
return redirect(url_for('scopes'))
@app.route('/action/cmd/run', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_run_cmd():
form = RunCmdForm(request.form)
@@ -2253,11 +2014,6 @@ def action_run_cmd():
server = get_server_from_clients(ips)
r = server.post('/shell/run', payload)
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
-
flash(_('Command sent successfully'), category='info')
return redirect(url_for('commands'))
else:
@@ -2273,6 +2029,7 @@ def action_run_cmd():
scopes=scopes)
@app.route('/action/script/run', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_run_script():
form = RunScriptForm(request.form)
@@ -2292,11 +2049,6 @@ def action_run_script():
server = get_server_from_clients(ips)
r = server.post('/shell/run', payload)
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
-
flash(_('Script run sent successfully'), category='info')
return redirect(url_for('commands'))
else:
@@ -2310,10 +2062,6 @@ def action_run_script():
reference_patitioning = None
for ip in ips:
r = server.get('/client/setup', payload={'client': [ip]})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
partitions = r.json()['partitions'][1:]
if not reference_patitioning:
@@ -2325,10 +2073,6 @@ def action_run_script():
flash(_('Some clients don\'t have same configuration'), category='info')
r = server.get('/shell/list')
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
scripts = r.json()['scripts']
@@ -2342,6 +2086,7 @@ def action_run_script():
scopes=scopes)
@app.route('/action/script/output', methods=['GET'])
+@handle_server_errors('commands')
@login_required
def action_script_display_output():
ips = parse_elements(request.args.to_dict())
@@ -2352,10 +2097,6 @@ def action_script_display_output():
server = get_server_from_clients(ips)
r = server.get('/shell/output', payload={'clients': list(ips)})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
client_data = r.json()['clients']
@@ -2387,10 +2128,6 @@ def get_clients_modes(ips, server):
modes = {}
for ip in ips:
r = server.get('/client/info', payload={"client": [ip]})
- if not r:
- raise ServerError
- if r.status_code != requests.codes.ok:
- raise ServerErrorCode
resp = r.json()
current_boot = resp['boot']
client_name = resp['name']
@@ -2401,6 +2138,7 @@ def get_clients_modes(ips, server):
return modes
@app.route('/action/mode', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_mode():
form = BootModeForm(request.form)
@@ -2410,10 +2148,6 @@ def action_mode():
server = get_server_from_clients(ips)
r = server.post('/mode', payload)
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
flash(_('Client set boot mode request sent successfully'), category='info')
return redirect(url_for('commands'))
@@ -2424,17 +2158,8 @@ def action_mode():
return redirect(url_for('commands'))
server = get_server_from_clients(ips)
- try:
- modes_set = get_clients_modes(ips, server)
- except ServerError:
- return ogserver_down('commands')
- except ServerErrorCode:
- return ogserver_error(r, 'commands')
+ modes_set = get_clients_modes(ips, server)
r = server.get('/mode')
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
mode_descriptions = {
'pxe': 'ogLive (pxe)',
@@ -2474,10 +2199,6 @@ def get_client_list_by_key(ips, server, key):
ret = {}
for ip in ips:
r = server.get('/client/info', payload={"client": [ip]})
- if not r:
- raise ServerError
- if r.status_code != requests.codes.ok:
- raise ServerErrorCode
resp = r.json()
val = resp[key]
if val not in ret:
@@ -2487,6 +2208,7 @@ def get_client_list_by_key(ips, server, key):
return ret
@app.route('/action/oglive', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_oglive():
form = OgliveForm(request.form)
@@ -2495,10 +2217,6 @@ def action_oglive():
payload = {'clients': ips, 'name': form.oglive.data}
server = get_server_from_clients(ips)
r = server.post('/oglive/set', payload)
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
flash(_('Client set ogLive request sent successfully'), category='info')
return redirect(url_for('commands'))
@@ -2510,18 +2228,9 @@ def action_oglive():
server = get_server_from_clients(list(ips))
- try:
- oglives_set = get_client_list_by_key(ips, server, key='livedir')
- except ServerError:
- return ogserver_down('commands')
- except ServerErrorCode:
- return ogserver_error(r, 'commands')
+ oglives_set = get_client_list_by_key(ips, server, key='livedir')
r = server.get('/oglive/list')
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
oglive_list = r.json()['oglive']
most_used_live = max(oglives_set, key=lambda l: len(oglives_set[l]))
@@ -2558,10 +2267,6 @@ def get_clients_repo_dictionary(ips, server, repositories):
for ip in ips:
r = server.get('/client/info', payload={"client": [ip]})
- if not r:
- raise ServerError
- if r.status_code != requests.codes.ok:
- raise ServerErrorCode
resp = r.json()
repo_name = repo_id_to_name[resp['repo_id']]
if repo_name not in repos:
@@ -2571,6 +2276,7 @@ def get_clients_repo_dictionary(ips, server, repositories):
return repos
@app.route('/action/repo/set', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_repo_set():
form = SetRepoForm(request.form)
@@ -2579,10 +2285,6 @@ def action_repo_set():
payload = {'clients': ips, 'id': int(form.repo.data)}
server = get_server_from_clients(ips)
r = server.post('/client/repo', payload)
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
flash(_('Repo set ogLive request sent successfully'), category='info')
return redirect(url_for('commands'))
@@ -2593,22 +2295,12 @@ def action_repo_set():
return redirect(url_for('commands'))
server = get_server_from_clients(list(ips))
- try:
- repositories = get_repositories(server)
- repos_set = get_clients_repo_dictionary(ips, server, repositories)
- except ServerError:
- return ogserver_down('commands')
- except ServerErrorCode:
- return ogserver_error(r, 'commands')
+ repositories = get_repositories(server)
+ repos_set = get_clients_repo_dictionary(ips, server, repositories)
scopes, clients = get_scopes(set(ips))
- try:
- repo_set = get_client_list_by_key(ips, server, key='repo_id')
- except ServerError:
- return ogserver_down('commands')
- except ServerErrorCode:
- return ogserver_error(r, 'commands')
+ repo_set = get_client_list_by_key(ips, server, key='repo_id')
most_used_repo_id = max(repo_set, key=lambda id: len(repo_set[id]))
@@ -2626,6 +2318,7 @@ def action_repo_set():
@app.route('/action/image/create', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_image_create():
form = ImageCreateForm(request.form)
@@ -2633,10 +2326,6 @@ def action_image_create():
ip = form.ip.data
server = get_server_from_clients([ip])
r = server.get('/client/info', payload={"client": [ip]})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
image_name = remove_accents(form.name.data.strip())
if ' ' in image_name:
@@ -2655,10 +2344,6 @@ def action_image_create():
"group_id": 0, # Default group.
"center_id": r.json()["center"]}
r = server.post('/image/create', payload)
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
return redirect(url_for('commands'))
else:
ips = parse_elements(request.args.to_dict())
@@ -2668,10 +2353,6 @@ def action_image_create():
server = get_server_from_clients(ips)
r = server.get('/client/setup', payload={'client': list(ips)})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
invalid_part_types = get_invalid_image_partition_types()
@@ -2691,18 +2372,9 @@ def action_image_create():
f"{FS_CODES.get(part.get('filesystem'), 'UNKNOWN')}")
)
r = server.get('/client/info', payload={'client': list(ips)})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
client_repo_id = r.json()['repo_id']
- try:
- repositories = get_repositories(server)
- except ServerError:
- return ogserver_down('commands')
- except ServerErrorCode:
- return ogserver_error(r, 'commands')
+ repositories = get_repositories(server)
form.repository.choices = [ (repo['id'], repo['name']) for repo in repositories
if client_repo_id == repo['id']]
form.repository.render_kw = {'readonly': True}
@@ -2716,6 +2388,7 @@ def action_image_create():
@app.route('/action/image/update', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_image_update():
form = ImageUpdateForm(request.form)
@@ -2725,22 +2398,14 @@ def action_image_update():
image_id = form.image.data
server = get_server_from_clients([ip])
r = server.get('/images')
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
images_list = r.json()['images']
image = search_image(images_list, int(image_id))
if not image:
flash(_('Image to restore was not found'), category='error')
return redirect(url_for('commands'))
- try:
- repository = get_repository(image['repo_id'], server)
- except ServerError:
- return ogserver_down('commands')
- except ServerErrorCode:
- return ogserver_error(r, 'commands')
+
+ repository = get_repository(image['repo_id'], server)
payload = {'clients': [ip],
'disk': disk,
'partition': partition,
@@ -2753,10 +2418,6 @@ def action_image_update():
'group_id': 0,
'center_id': 0}
r = server.post('/image/update', payload)
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
flash(_('Image update command sent sucessfully'), category='info')
return redirect(url_for('commands'))
@@ -2769,24 +2430,15 @@ def action_image_update():
server = get_server_from_clients(ips)
r = server.get('/client/info', payload={'client': list(ips)})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
repo_id = r.json()['repo_id']
- try:
- images = get_images_from_repo(server, repo_id)
+ images = get_images_from_repo(server, repo_id)
- if not images:
- flash(_(f'Computer(s) assigned to a repo with no images'), category='error')
- return redirect(url_for('commands'))
+ if not images:
+ flash(_(f'Computer(s) assigned to a repo with no images'), category='error')
+ return redirect(url_for('commands'))
- images = filter_images_allowed_in_center(server, images, center_id)
- except ServerError:
- return ogserver_down('commands')
- except ServerErrorCode:
- return ogserver_error(r, 'commands')
+ images = filter_images_allowed_in_center(server, images, center_id)
sort_images(images)
@@ -2794,10 +2446,6 @@ def action_image_update():
form.image.choices.append((image['id'], image['name']))
r = server.get('/client/setup', payload={'client': list(ips)})
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
invalid_part_types = get_invalid_image_partition_types()
@@ -2838,6 +2486,7 @@ def action_image_update():
@app.route('/action/reboot', methods=['GET', 'POST'])
+@handle_server_errors('commands')
@login_required
def action_reboot():
form = GenericForm(request.form)
@@ -2849,14 +2498,7 @@ def action_reboot():
payload = {'clients': ips}
server = get_server_from_clients(ips)
r = server.post('/reboot', payload)
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- flash(_('ogServer: error rebooting client'),
- category='error')
- else:
- flash(_('Client rebooted successfully'),
- category='info')
+ flash(_('Client rebooted successfully'), category='info')
return redirect(url_for('commands'))
else:
ips = parse_elements(request.args.to_dict())
@@ -2872,6 +2514,7 @@ def action_reboot():
@app.route('/action/refresh', methods=['POST'])
+@handle_server_errors('commands')
@login_required
def action_refresh():
ips = parse_elements(request.form.to_dict())
@@ -2881,15 +2524,11 @@ def action_refresh():
server = get_server_from_clients(list(ips))
payload = {'clients': list(ips)}
r = server.post('/refresh', payload)
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- flash(_('OgServer replied with a non ok status code'), category='error')
- else:
- flash(_('Refresh request processed successfully'), category='info')
+ flash(_('Refresh request processed successfully'), category='info')
return redirect(url_for('commands'))
@app.route('/action/center/add', methods=['GET', 'POST'])
+@handle_server_errors('scopes')
@login_required
def action_center_add():
form = CenterForm(request.form)
@@ -2898,13 +2537,7 @@ def action_center_add():
"comment": form.comment.data}
server = get_server_from_ip_port(form.server.data)
r = server.post('/center/add', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- flash(_('Server replied with error code when adding the center'),
- category='error')
- else:
- flash(_('Center added successfully'), category='info')
+ flash(_('Center added successfully'), category='info')
return redirect(url_for("scopes"))
else:
server_choices = [(server.ip + ':' + str(server.port), server.name)
@@ -2915,6 +2548,7 @@ def action_center_add():
scopes=scopes)
@app.route('/action/center/update', methods=['GET', 'POST'])
+@handle_server_errors('scopes')
@login_required
def action_center_update():
form = CenterForm(request.form)
@@ -2924,13 +2558,7 @@ def action_center_update():
"comment": form.comment.data}
server = get_server_from_ip_port(form.server.data)
r = server.post('/center/update', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- flash(_('Server replied with error code when updating the center'),
- category='error')
- else:
- flash(_('Center updated successfully'), category='info')
+ flash(_('Center updated successfully'), category='info')
return redirect(url_for("scopes"))
else:
params = request.args.to_dict()
@@ -2952,10 +2580,6 @@ def action_center_update():
payload = {"id": int(center)}
r = server.get('/center/info', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'scopes')
form.comment.data = r.json()['comment']
form.name.data = r.json()['name']
@@ -2966,6 +2590,7 @@ def action_center_update():
scopes=scopes)
@app.route('/action/center/info', methods=['GET'])
+@handle_server_errors('scopes')
@login_required
def action_center_info():
form = CenterForm(request.form)
@@ -2989,10 +2614,6 @@ def action_center_info():
payload = {"id": int(center)}
r = server.get('/center/info', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'scopes')
form.comment.data = r.json()['comment']
form.comment.render_kw = {'readonly': True}
@@ -3037,6 +2658,7 @@ def get_scope_context(elem_id, elem_type, scopes):
return (ancestors, children)
@app.route('/action/center/delete', methods=['GET', 'POST'])
+@handle_server_errors('scopes')
@login_required
def action_center_delete():
form = DeleteCenterForm(request.form)
@@ -3044,13 +2666,7 @@ def action_center_delete():
server = get_server_from_ip_port(form.server.data)
payload = {"id": form.center.data}
r = server.post('/center/delete', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- flash(_('Server replied with error code when deleting the center'),
- category='error')
- else:
- flash(_('Center deleted successfully'), category='info')
+ flash(_('Center deleted successfully'), category='info')
return redirect(url_for("scopes"))
else:
params = request.args.to_dict()
@@ -3059,10 +2675,6 @@ def action_center_delete():
return redirect(url_for('scopes'))
server = get_server_from_ip_port(params['scope-server'])
r = server.get('/scopes')
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'scopes')
form.center.data = params['scope-center']
form.server.data = params['scope-server']
@@ -3072,6 +2684,7 @@ def action_center_delete():
scopes=scopes, ancestors=ancestors, children=children)
@app.route('/action/room/add', methods=['GET', 'POST'])
+@handle_server_errors('scopes')
@login_required
def action_room_add():
form = RoomForm(request.form)
@@ -3083,12 +2696,7 @@ def action_room_add():
"gateway": form.gateway.data,
"folder_id": int(form.folder_id.data)}
r = server.post('/room/add', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- flash(_('Server replied with error code when adding the room'), category='error')
- else:
- flash(_('Room added successfully'), category='info')
+ flash(_('Room added successfully'), category='info')
return redirect(url_for("scopes"))
else:
params = request.args.to_dict()
@@ -3097,10 +2705,6 @@ def action_room_add():
return redirect(url_for('scopes'))
server = get_server_from_ip_port(params['scope-server'])
r = server.get('/scopes')
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'scopes')
selected_center_id = params['scope-center']
centers = parse_scopes_from_tree(r.json(), 'center')
@@ -3120,6 +2724,7 @@ def action_room_add():
scopes=scopes)
@app.route('/action/room/update', methods=['GET', 'POST'])
+@handle_server_errors('scopes')
@login_required
def action_room_update():
form = RoomForm(request.form)
@@ -3130,12 +2735,7 @@ def action_room_update():
"gateway": form.gateway.data,
"id": int(form.room.data)}
r = server.post('/room/update', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- flash(_('Server replied with error code when updating the room'), category='error')
- else:
- flash(_('Room updated successfully'), category='info')
+ flash(_('Room updated successfully'), category='info')
return redirect(url_for("scopes"))
else:
params = request.args.to_dict()
@@ -3151,10 +2751,6 @@ def action_room_update():
payload = {"id": int(room_id)}
r = server.get('/room/info', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'scopes')
form.name.data = r.json()['name']
form.gateway.data = r.json()['gateway']
form.netmask.data = r.json()['netmask']
@@ -3166,6 +2762,7 @@ def action_room_update():
scopes=scopes)
@app.route('/action/room/info', methods=['GET'])
+@handle_server_errors('scopes')
@login_required
def action_room_info():
form = RoomForm(request.form)
@@ -3180,10 +2777,6 @@ def action_room_info():
payload = {"id": int(room_id)}
r = server.get('/room/info', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'scopes')
form.name.data = r.json()['name']
form.name.render_kw = {'readonly': True}
form.gateway.data = r.json()['gateway']
@@ -3198,6 +2791,7 @@ def action_room_info():
scopes=scopes)
@app.route('/action/room/delete', methods=['GET', 'POST'])
+@handle_server_errors('scopes')
@login_required
def action_room_delete():
form = DeleteRoomForm(request.form)
@@ -3205,13 +2799,7 @@ def action_room_delete():
payload = {"id": form.room.data}
server = get_server_from_ip_port(form.server.data)
r = server.post('/room/delete', payload)
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- flash(_('Server replied with error code when deleting the room'),
- category='error')
- else:
- flash(_('Room deleted successfully'), category='info')
+ flash(_('Room deleted successfully'), category='info')
return redirect(url_for("scopes"))
else:
params = request.args.to_dict()
@@ -3220,10 +2808,6 @@ def action_room_delete():
return redirect(url_for('scopes'))
server = get_server_from_ip_port(params['scope-server'])
r = server.get('/scopes')
- if not r:
- return ogserver_down('scopes')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'scopes')
form.room.data = params['scope-room']
form.room.render_kw = {'readonly': True}
@@ -3236,7 +2820,11 @@ def action_room_delete():
@app.route('/commands/', methods=['GET'])
@login_required
def commands():
- scopes, clients = get_scopes()
+ try:
+ scopes, clients = get_scopes()
+ except ServerError:
+ scopes = {}
+ clients = {}
return render_template('commands.html', scopes=scopes, clients=clients)
def _get_sorted_repos(repos):
@@ -3249,12 +2837,7 @@ def get_images_grouped_by_repos():
server={}
server['server'] = resp['server']
images=resp['json']['images']
- try:
- all_repos=get_repositories(resp['server'])
- except ServerError:
- continue
- except ServerErrorCode:
- continue
+ all_repos=get_repositories(resp['server'])
repos={}
sort_images(images)
@@ -3280,14 +2863,20 @@ def get_images_grouped_by_repos():
@app.route('/images/', methods=['GET'])
@login_required
def images():
- responses = get_images_grouped_by_repos()
+ try:
+ responses = get_images_grouped_by_repos()
+ except ServerError:
+ responses = []
return render_template('images.html', responses=responses)
@app.route('/repos/', methods=['GET'])
@login_required
def manage_repos():
- responses = get_all_repositories()
+ try:
+ responses = get_all_repositories()
+ except ServerError:
+ responses = []
return render_template('repos.html', repos_resp=responses)
def repo_addr_is_valid(form):
@@ -3320,6 +2909,7 @@ def repo_addr_is_valid(form):
return res
@app.route('/action/repo/add', methods=['POST', 'GET'])
+@handle_server_errors('manage_repos')
@login_required
def action_repo_add():
form = RepoForm(request.form)
@@ -3338,13 +2928,7 @@ def action_repo_add():
"center": 1}
server = get_server_from_ip_port(form.server.data)
r = server.post('/repository/add', payload)
- if not r:
- return ogserver_down('manage_repos')
- if r.status_code != requests.codes.ok:
- flash(_('ogServer: error adding repo'),
- category='error')
- else:
- flash(_('Repo added successfully'), category='info')
+ flash(_('Repo added successfully'), category='info')
return redirect(url_for("manage_repos"))
else:
params = request.args.to_dict()
@@ -3360,6 +2944,7 @@ def action_repo_add():
repos_resp=responses)
@app.route('/action/repo/update', methods=['GET', 'POST'])
+@handle_server_errors('manage_repos')
@login_required
def action_repo_update():
form = RepoForm(request.form)
@@ -3376,14 +2961,7 @@ def action_repo_update():
'addr': addr,
'center': 1}
r = server.post('/repository/update', payload)
- if not r:
- return ogserver_down('manage_repos')
- if r.status_code != requests.codes.ok:
- flash(_('ogServer: error updating repo'),
- category='error')
- else:
- flash(_('Repo updated successfully'),
- category='info')
+ flash(_('Repo updated successfully'), category='info')
return redirect(url_for('manage_repos'))
else:
params = request.args.to_dict()
@@ -3397,12 +2975,7 @@ def action_repo_update():
flash(_('Please, select a server'), category='error')
return redirect(url_for('manage_repos'))
server = get_server_from_ip_port(server_ip_port)
- try:
- repository = get_repository(int(repo_id), server)
- except ServerError:
- return ogserver_down('manage_repos')
- except ServerErrorCode:
- return ogserver_error(r, 'manage_repos')
+ repository = get_repository(int(repo_id), server)
form.server.data = server_ip_port
form.repo_id.data = repo_id
@@ -3415,6 +2988,7 @@ def action_repo_update():
repos_resp=responses)
@app.route('/action/repo/delete', methods=['GET', 'POST'])
+@handle_server_errors('manage_repos')
@login_required
def action_repo_delete():
form = RepoForm(request.form)
@@ -3422,14 +2996,8 @@ def action_repo_delete():
server = get_server_from_ip_port(form.server.data)
payload = { 'id': int(form.repo_id.data) }
r = server.post('/repository/delete', payload)
- if not r:
- return ogserver_down('manage_repos')
- if r.status_code != requests.codes.ok:
- flash(_('ogServer: error deleting repo'),
- category='error')
- else:
- flash(_('Repo deleted successfully'),
- category='info')
+
+ flash(_('Repo deleted successfully'), category='info')
return redirect(url_for('manage_repos'))
else:
params = request.args.to_dict()
@@ -3448,12 +3016,7 @@ def action_repo_delete():
flash(_('Please, select a server'), category='error')
return redirect(url_for('manage_repos'))
server = get_server_from_ip_port(server_ip_port)
- try:
- repository = get_repository(repo_id, server)
- except ServerError:
- return ogserver_down('manage_repos')
- except ServerErrorCode:
- return ogserver_error(r, 'manage_repos')
+ repository = get_repository(repo_id, server)
form.server.data = server_ip_port
form.repo_id.data = repo_id
form.name.data = repository['name']
@@ -3469,6 +3032,7 @@ def action_repo_delete():
@app.route('/action/repo/info', methods=['GET'])
+@handle_server_errors('manage_repos')
@login_required
def action_repo_info():
form = RepoForm()
@@ -3487,12 +3051,7 @@ def action_repo_info():
flash(_('Please, select a server'), category='error')
return redirect(url_for('manage_repos'))
server = get_server_from_ip_port(server_ip_port)
- try:
- repository = get_repository(repo_id, server)
- except ServerError:
- return ogserver_down('manage_repos')
- except ServerErrorCode:
- return ogserver_error(r, 'manage_repos')
+ repository = get_repository(repo_id, server)
form.name.data = repository['name']
form.name.render_kw = {'readonly': True}
for addr in repository['addr']:
@@ -3510,6 +3069,7 @@ def manage_servers():
return render_template('servers.html', servers=servers)
@app.route('/server/update', methods=['GET'])
+@handle_server_errors('manage_servers')
@login_required
def server_update_get():
params = request.args.to_dict()
@@ -3520,10 +3080,6 @@ def server_update_get():
return redirect(url_for('manage_servers'))
r = selected_server.get('/server')
- if not r:
- return ogserver_down('manage_servers')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'manage_servers')
form = ServerConfigurationForm()
server_config = r.json()['servers']
@@ -3536,6 +3092,7 @@ def server_update_get():
servers=servers)
@app.route('/server/update', methods=['POST'])
+@handle_server_errors('manage_servers')
@login_required
def server_update_post():
form = ServerConfigurationForm(request.form)
@@ -3557,10 +3114,6 @@ def server_update_post():
return redirect(url_for('manage_servers'))
r = server.get('/server')
- if not r:
- return ogserver_down('manage_servers')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'manage_servers')
server_config = r.json()['servers']
# Remove
@@ -3570,10 +3123,6 @@ def server_update_post():
payload = {'id': c['id']}
rd = server.delete('/server', payload=payload)
- if not rd:
- return ogserver_down('manage_servers')
- if rd.status_code != requests.codes.ok:
- return ogserver_error(r, 'manage_servers')
# Add
for ip in addr_list:
@@ -3588,16 +3137,13 @@ def server_update_post():
payload = {'address': ip}
ra = server.post('/server', payload=payload)
- if not ra:
- return ogserver_down('manage_servers')
- if ra.status_code != requests.codes.ok:
- return ogserver_error(r, 'manage_servers')
flash(_('Server update request sent successfully'), category='info')
return redirect(url_for('manage_servers'))
@app.route('/server/add', methods=['GET'])
+@handle_server_errors('manage_servers')
@login_required
def server_add_get():
form = ServerForm()
@@ -3606,6 +3152,7 @@ def server_add_get():
@app.route('/server/add', methods=['POST'])
+@handle_server_errors('manage_servers')
@login_required
def server_add_post():
form = ServerForm(request.form)
@@ -3623,6 +3170,7 @@ def server_add_post():
@app.route('/server/delete', methods=['GET'])
+@handle_server_errors('manage_servers')
@login_required
def server_delete_get():
params = request.args.to_dict()
@@ -3646,6 +3194,7 @@ def server_delete_get():
@app.route('/server/delete', methods=['POST'])
+@handle_server_errors('manage_servers')
@login_required
def server_delete_post():
form = ServerForm(request.form)
@@ -3665,10 +3214,14 @@ def server_delete_post():
@app.route('/lives/', methods=['GET'])
@login_required
def manage_lives():
- oglive_list = multi_request('get', '/oglive/list')
+ try:
+ oglive_list = multi_request('get', '/oglive/list')
+ except ServerError:
+ oglive_list = []
return render_template('lives.html', oglive_list=oglive_list, servers=servers)
@app.route('/action/live/default', methods=['GET', 'POST'])
+@handle_server_errors('manage_lives')
@login_required
def action_live_default():
form = OgliveForm(request.form)
@@ -3680,10 +3233,6 @@ def action_live_default():
return redirect(url_for('manage_lives'))
payload = {'name': form.oglive.data}
r = server.post('/oglive/default', payload)
- if not r:
- return ogserver_down('manage_lives')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'manage_lives')
flash(_('Set default ogLive request sent successfully'), category='info')
return redirect(url_for('manage_lives'))
else:
@@ -3694,10 +3243,6 @@ def action_live_default():
flash(_('Please, select one server'), category='error')
return redirect(url_for('manage_lives'))
r = server.get('/oglive/list')
- if not r:
- return ogserver_down('commands')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'commands')
oglive_list = r.json()['oglive']
@@ -3895,6 +3440,7 @@ def delete_user(username):
@app.route('/user/add', methods=['GET'])
+@handle_server_errors('users')
@login_required
def user_add_get():
form = UserForm()
@@ -3903,6 +3449,7 @@ def user_add_get():
@app.route('/user/add', methods=['POST'])
+@handle_server_errors('users')
@login_required
def user_add_post():
form = UserForm(request.form)
@@ -3921,6 +3468,7 @@ def user_add_post():
@app.route('/user/edit', methods=['GET'])
+@handle_server_errors('users')
@login_required
def user_edit_get():
username_set = parse_elements(request.args.to_dict())
@@ -3972,6 +3520,7 @@ def user_edit_get():
@app.route('/user/edit', methods=['POST'])
+@handle_server_errors('users')
@login_required
def user_edit_post():
form = EditUserForm(request.form)
@@ -3996,6 +3545,7 @@ def user_edit_post():
@app.route('/user/delete', methods=['GET'])
+@handle_server_errors('users')
@login_required
def user_delete_get():
username_set = parse_elements(request.args.to_dict())
@@ -4015,6 +3565,7 @@ def user_delete_get():
@app.route('/action/image/list', methods=['GET'])
+@handle_server_errors('images')
@login_required
def action_image_list():
params = request.args.to_dict()
@@ -4024,31 +3575,27 @@ def action_image_list():
flash(_('Please, select one more images to be listed'), category='error')
return redirect(url_for('images'))
server = get_server_from_ip_port(params['image-server'])
- try:
- responses = get_images_grouped_by_repos()
- servers = []
- for server in responses:
- repos = []
- for unused, repo in server['repos'].items():
- images=[]
- for img in repo['images']:
- if int(img['id']) in ids:
- images.append(img)
- if images:
- repos.append((repo['name'], images))
- if repos:
- s={}
- s['name'] = server['server'].name
- s['repos'] = repos
- servers.append(s)
- except ServerError:
- return ogserver_down('images')
- except ServerErrorCode:
- return ogserver_error(r, 'images')
+ responses = get_images_grouped_by_repos()
+ servers = []
+ for server in responses:
+ repos = []
+ for unused, repo in server['repos'].items():
+ images=[]
+ for img in repo['images']:
+ if int(img['id']) in ids:
+ images.append(img)
+ if images:
+ repos.append((repo['name'], images))
+ if repos:
+ s={}
+ s['name'] = server['server'].name
+ s['repos'] = repos
+ servers.append(s)
return render_template('actions/list_images.html',
servers=servers, responses=responses)
@app.route('/user/delete', methods=['POST'])
+@handle_server_errors('users')
@login_required
def user_delete_post():
form = DeleteUserForm(request.form)
@@ -4068,6 +3615,7 @@ def user_delete_post():
@app.route('/action/image/info', methods=['GET'])
+@handle_server_errors('images')
@login_required
def action_image_info():
form = ImageDetailsForm()
@@ -4079,10 +3627,6 @@ def action_image_info():
id = ids.pop()
server = get_server_from_ip_port(params['image-server'])
r = server.get('/images')
- if not r:
- return ogserver_down('images')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'images')
images = r.json()['images']
image = next(img for img in images if img['id'] == int(id))
@@ -4102,18 +3646,9 @@ def action_image_info():
form.checksum.data = checksum
- try:
- responses = get_images_grouped_by_repos()
- except ServerError:
- return ogserver_down('images')
- except ServerErrorCode:
- return ogserver_error(r, 'images')
+ responses = get_images_grouped_by_repos()
r = server.get('/image/restrict', {'image': image['id']})
- if not r:
- raise ServerError
- if r.status_code != requests.codes.ok:
- raise ServerErrorCode
form.scopes.choices = get_available_centers()
form.scopes.data = [str(scope) for scope in r.json().get('scopes')]
@@ -4122,6 +3657,7 @@ def action_image_info():
responses=responses)
@app.route('/action/image/delete', methods=['GET', 'POST'])
+@handle_server_errors('images')
@login_required
def action_image_delete():
form = GenericForm(request.form)
@@ -4135,10 +3671,6 @@ def action_image_delete():
for id in ids:
payload = {'image': id}
r = server.post('/image/delete', payload)
- if not r:
- return ogserver_down('images')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'images')
flash(_('Image deletion request sent successfully'), category='info')
return redirect(url_for('images'))
@@ -4151,12 +3683,7 @@ def action_image_delete():
return redirect(url_for('images'))
server = get_server_from_ip_port(params['image-server'])
- try:
- responses = get_images_grouped_by_repos()
- except ServerError:
- return ogserver_down('images')
- except ServerErrorCode:
- return ogserver_error(r, 'images')
+ responses = get_images_grouped_by_repos()
form.ids.data = ' '.join(image_ids)
form.server.data = params['image-server']
@@ -4166,6 +3693,7 @@ def action_image_delete():
responses=responses)
@app.route('/action/image/config', methods=['GET', 'POST'])
+@handle_server_errors('images')
@login_required
def action_image_config():
form = ImageConfigForm(request.form)
@@ -4178,10 +3706,6 @@ def action_image_config():
payload = {'image': image_id, 'scopes': scope_list}
r = server.post('/image/restrict', payload)
- if not r:
- return ogserver_down('images')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'images')
flash(_('Image updated successfully'), category='info')
return redirect(url_for('images'))
@@ -4200,21 +3724,12 @@ def action_image_config():
form.name.data = image_name
r = server.get('/image/restrict', {'image': int(image_id)})
- if not r:
- return ogserver_down('images')
- if r.status_code != requests.codes.ok:
- return ogserver_error(r, 'images')
form.server.data = params['image-server']
form.scopes.choices = get_available_centers()
form.scopes.data = [str(scope) for scope in r.json().get('scopes')]
- try:
- responses = get_images_grouped_by_repos()
- except ServerError:
- return ogserver_down('images')
- except ServerErrorCode:
- return ogserver_error(r, 'images')
+ responses = get_images_grouped_by_repos()
return render_template('actions/image_config.html', form=form,
responses=responses)