core: added metadata for control upgrades.

This commit is contained in:
Marcin Kuzminski 2017-02-02 23:11:07 +01:00
parent b8e42f991d
commit 4d3bbcd18e
2 changed files with 39 additions and 2 deletions

View file

@ -52,7 +52,8 @@ from rhodecode.lib.middleware.https_fixup import HttpsFixup
from rhodecode.lib.middleware.vcs import VCSMiddleware
from rhodecode.lib.plugins.utils import register_rhodecode_plugin
from rhodecode.lib.utils2 import aslist as rhodecode_aslist
from rhodecode.subscribers import scan_repositories_if_enabled
from rhodecode.subscribers import (
scan_repositories_if_enabled, write_metadata_if_needed)
log = logging.getLogger(__name__)
@ -296,6 +297,7 @@ def includeme(config):
# Add subscribers.
config.add_subscriber(scan_repositories_if_enabled, ApplicationCreated)
config.add_subscriber(write_metadata_if_needed, ApplicationCreated)
# Set the authorization policy.
authz_policy = ACLAuthorizationPolicy()

View file

@ -18,11 +18,12 @@
# RhodeCode Enterprise Edition, including its added features, Support services,
# and proprietary license terms, please see https://rhodecode.com/licenses/
import datetime
import logging
import pylons
import Queue
import subprocess32
import os
from pyramid.i18n import get_localizer
from pyramid.threadlocal import get_current_request
@ -134,6 +135,40 @@ def scan_repositories_if_enabled(event):
repo2db_mapper(repositories, remove_obsolete=False)
def write_metadata_if_needed(event):
"""
Writes upgrade metadata
"""
import rhodecode
from rhodecode.lib import system_info
from rhodecode.lib import ext_json
def write():
fname = '.rcmetadata.json'
ini_loc = os.path.dirname(rhodecode.CONFIG.get('__file__'))
metadata_destination = os.path.join(ini_loc, fname)
dbinfo = system_info.SysInfo(system_info.database_info)()['value']
del dbinfo['url']
metadata = dict(
desc='upgrade metadata info',
created_on=datetime.datetime.utcnow().isoformat(),
usage=system_info.SysInfo(system_info.usage_info)()['value'],
platform=system_info.SysInfo(system_info.platform_type)()['value'],
database=dbinfo,
cpu=system_info.SysInfo(system_info.cpu)()['value'],
memory=system_info.SysInfo(system_info.memory)()['value'],
)
with open(metadata_destination, 'wb') as f:
f.write(ext_json.json.dumps(metadata))
try:
write()
except Exception:
pass
class Subscriber(object):
"""
Base class for subscribers to the pyramid event system.