##// END OF EJS Templates
system-settings: prepare to allow to create snapshots of full system settings...
marcink -
r280:136f6d39 default
parent child Browse files
Show More
@@ -0,0 +1,75 b''
1 <%
2 elems = [
3 ## general
4 (_('RhodeCode Enterprise version'), c.rhodecode_version, ''),
5 (_('Upgrade info endpoint'), c.rhodecode_update_url, ''),
6 (_('Configuration INI file'), c.rhodecode_config_ini, ''),
7 ## systems stats
8 (_('RhodeCode Enterprise Server IP'), c.server_ip, ''),
9 (_('RhodeCode Enterprise Server ID'), c.server_id, ''),
10 (_('Platform'), c.platform, ''),
11 (_('Uptime'), c.uptime_age, ''),
12 (_('Storage location'), c.storage, ''),
13 (_('Storage disk space'), "%s/%s, %s%% used%s" % (h.format_byte_size_binary(c.disk['used']), h.format_byte_size_binary(c.disk['total']),(c.disk['percent']), ' %s' % c.disk['error'] if 'error' in c.disk else ''), ''),
14
15 (_('Search index storage'), c.index_storage, ''),
16 (_('Search index size'), "%s %s" % (h.format_byte_size_binary(c.disk_index['used']), ' %s' % c.disk_index['error'] if 'error' in c.disk_index else ''), ''),
17
18 (_('Gist storage'), c.gist_storage, ''),
19 (_('Gist storage size'), "%s (%s items)%s" % (h.format_byte_size_binary(c.disk_gist['used']),c.disk_gist['items'], ' %s' % c.disk_gist['error'] if 'error' in c.disk_gist else ''), ''),
20
21 (_('Archive cache'), c.archive_storage, ''),
22 (_('Archive cache size'), "%s%s" % (h.format_byte_size_binary(c.disk_archive['used']), ' %s' % c.disk_archive['error'] if 'error' in c.disk_archive else ''), ''),
23
24 (_('System memory'), c.system_memory, ''),
25 (_('CPU'), '%s %%' %(c.cpu), ''),
26 (_('Load'), '1min: %s, 5min: %s, 15min: %s' %(c.load['1_min'],c.load['5_min'],c.load['15_min']), ''),
27
28 ## rhodecode stuff
29 (_('Python version'), c.py_version, ''),
30 (_('Python path'), c.py_path, ''),
31 (_('GIT version'), c.git_version, ''),
32 (_('HG version'), c.hg_version, ''),
33 (_('SVN version'), c.svn_version, ''),
34 (_('Database'), "%s @ version: %s" % (c.db_type, c.db_migrate_version), ''),
35 (_('Database version'), c.db_version, ''),
36
37 ]
38 %>
39
40 <pre>
41 SYSTEM INFO
42 -----------
43
44 % for dt, dd, tt in elems:
45 ${dt}: ${dd}
46 % endfor
47
48 PYTHON PACKAGES
49 ---------------
50
51 % for key, value in c.py_modules:
52 ${key}: ${value}
53 % endfor
54
55 SYSTEM SETTINGS
56 ---------------
57
58 % for key, value in sorted(c.rhodecode_ini_safe.items()):
59 % if isinstance(value, dict):
60
61 % for key2, value2 in value.items():
62 [${key}]${key2}: ${value2}
63 % endfor
64
65 % else:
66 ${key}: ${value}
67 % endif
68 % endfor
69
70 </pre>
71
72
73
74
75
@@ -49,7 +49,7 b' from rhodecode.lib.compat import Ordered'
49 49 from rhodecode.lib.ext_json import json
50 50 from rhodecode.lib.utils import jsonify
51 51
52 from rhodecode.model.db import RhodeCodeUi, Repository
52 from rhodecode.model.db import RhodeCodeUi, Repository, User
53 53 from rhodecode.model.forms import ApplicationSettingsForm, \
54 54 ApplicationUiSettingsForm, ApplicationVisualisationForm, \
55 55 LabsSettingsForm, IssueTrackerPatternsForm
@@ -60,6 +60,7 b' from rhodecode.model.meta import Session'
60 60 from rhodecode.model.settings import (
61 61 IssueTrackerSettingsModel, VcsSettingsModel, SettingNotFound,
62 62 SettingsModel)
63
63 64 from rhodecode.model.supervisor import SupervisorModel, SUPERVISOR_MASTER
64 65
65 66
@@ -524,6 +525,7 b' class SettingsController(BaseController)'
524 525 def settings_system(self):
525 526 """GET /admin/settings/system: All items in the collection"""
526 527 # url('admin_settings_system')
528 snapshot = str2bool(request.GET.get('snapshot'))
527 529 c.active = 'system'
528 530
529 531 defaults = self._form_defaults()
@@ -558,6 +560,35 b' class SettingsController(BaseController)'
558 560 except TypeError:
559 561 c.system_memory = 'NOT AVAILABLE'
560 562
563 rhodecode_ini_safe = rhodecode.CONFIG.copy()
564 blacklist = [
565 'rhodecode_license_key',
566 'routes.map',
567 'pylons.h',
568 'pylons.app_globals',
569 'pylons.environ_config',
570 'sqlalchemy.db1.url',
571 ('app_conf', 'sqlalchemy.db1.url')
572 ]
573 for k in blacklist:
574 if isinstance(k, tuple):
575 section, key = k
576 if section in rhodecode_ini_safe:
577 rhodecode_ini_safe[section].pop(key, None)
578 else:
579 rhodecode_ini_safe.pop(k, None)
580
581 c.rhodecode_ini_safe = rhodecode_ini_safe
582
583 # TODO: marcink, figure out how to allow only selected users to do this
584 c.allowed_to_snapshot = False
585
586 if snapshot:
587 if c.allowed_to_snapshot:
588 return render('admin/settings/settings_system_snapshot.html')
589 else:
590 h.flash('You are not allowed to do this', category='warning')
591
561 592 return htmlfill.render(
562 593 render('admin/settings/settings.html'),
563 594 defaults=defaults,
@@ -45,12 +45,15 b''
45 45 <div class="panel panel-default">
46 46 <div class="panel-heading">
47 47 <h3 class="panel-title">${_('System Info')}</h3>
48 % if c.allowed_to_snapshot:
49 <a href="${url('admin_settings_system', snapshot=1)}" class="panel-edit">${_('create snapshot')}</a>
50 % endif
48 51 </div>
49 52 <div class="panel-body">
50 53 <dl class="dl-horizontal settings">
51 54 %for dt, dd, tt in elems:
52 <dt >${dt}:</dt>
53 <dd title="${tt}">${dd}</dd>
55 <dt>${dt}:</dt>
56 <dd title="${tt}">${dd}</dd>
54 57 %endfor
55 58 </dl>
56 59 </div>
@@ -69,7 +72,7 b''
69 72 <tbody>
70 73 %for key, value in c.py_modules:
71 74 <tr>
72 <td >${key}</td>
75 <td>${key}</td>
73 76 <td>${value}</td>
74 77 </tr>
75 78 %endfor
General Comments 0
You need to be logged in to leave comments. Login now