def upg(cfg, descr): """Upgrader.""" u = upgrader(cfg, descr) u.obsolete('6.4.1', ['test battery', 'directives']) u.obsolete('6.11.0', ['state dump rolling archive length']) # Roll over is always done. u.obsolete('7.8.0', ['suite logging', 'roll over at start-up']) u.obsolete('7.8.1', ['documentation', 'local index']) u.obsolete('7.8.1', ['documentation', 'files', 'pdf user guide']) u.obsolete('7.8.1', ['documentation', 'files', 'single-page html user guide']) u.deprecate('7.8.1', ['documentation', 'files', 'multi-page html user guide'], ['documentation', 'local']) u.deprecate('8.0.0', ['documentation', 'files', 'html index'], ['documentation', 'local']) u.deprecate('8.0.0', ['documentation', 'urls', 'internet homepage'], ['documentation', 'cylc homepage']) u.obsolete('8.0.0', ['suite servers', 'scan hosts']) u.obsolete('8.0.0', ['suite servers', 'scan ports']) u.obsolete('8.0.0', ['communication']) u.upgrade()
def upg(cfg, descr): """Upgrader.""" u = upgrader(cfg, descr) u.obsolete('6.4.1', ['test battery', 'directives']) u.obsolete('6.11.0', ['state dump rolling archive length']) # Roll over is always done. u.obsolete('7.8.0', ['suite logging', 'roll over at start-up']) u.obsolete('7.8.1', ['documentation', 'local index']) u.obsolete('7.8.1', ['documentation', 'files', 'pdf user guide']) u.obsolete('7.8.1', ['documentation', 'files', 'single-page html user guide']) u.deprecate('7.8.1', ['documentation', 'files', 'multi-page html user guide'], ['documentation', 'local']) u.deprecate('8.0.0', ['documentation', 'files', 'html index'], ['documentation', 'local']) u.deprecate('8.0.0', ['documentation', 'urls', 'internet homepage'], ['documentation', 'cylc homepage']) u.obsolete('8.0.0', ['suite servers', 'scan hosts']) u.obsolete('8.0.0', ['suite servers', 'scan ports']) u.obsolete('8.0.0', ['communication']) u.obsolete('8.0.0', ['temporary directory']) u.obsolete('8.0.0', ['task host select command timeout']) u.obsolete('8.0.0', ['xtrigger function timeout']) u.obsolete('8.0.0', ['enable run directory housekeeping']) u.obsolete('8.0.0', ['task messaging']) u.upgrade()
def upg(cfg, descr): """Upgrade old suite configuration.""" u = upgrader(cfg, descr) u.obsolete('6.1.3', ['visualization', 'enable live graph movie']) u.obsolete('7.2.2', ['cylc', 'dummy mode']) u.obsolete('7.2.2', ['cylc', 'simulation mode']) u.obsolete('7.2.2', ['runtime', '__MANY__', 'dummy mode']) u.obsolete('7.2.2', ['runtime', '__MANY__', 'simulation mode']) u.obsolete('7.6.0', ['runtime', '__MANY__', 'enable resurrection']) u.obsolete('7.8.0', ['runtime', '__MANY__', 'suite state polling', 'template']) u.obsolete('7.8.1', ['cylc', 'events', 'reset timer']) u.obsolete('7.8.1', ['cylc', 'events', 'reset inactivity timer']) u.obsolete('7.8.1', ['runtime', '__MANY__', 'events', 'reset timer']) u.obsolete('8.0.0', ['cylc', 'log resolved dependencies']) u.obsolete('8.0.0', ['cylc', 'reference test', 'allow task failures']) u.obsolete('8.0.0', ['cylc', 'reference test', 'live mode suite timeout']) u.obsolete('8.0.0', ['cylc', 'reference test', 'dummy mode suite timeout']) u.obsolete('8.0.0', ['cylc', 'reference test', 'dummy-local mode suite timeout']) u.obsolete('8.0.0', ['cylc', 'reference test', 'simulation mode suite timeout']) u.obsolete('8.0.0', ['cylc', 'reference test', 'required run mode']) u.obsolete('8.0.0', ['cylc', 'reference test', 'suite shutdown event handler']) u.deprecate('8.0.0', ['cylc', 'abort if any task fails'], ['cylc', 'events', 'abort if any task fails']) u.obsolete('8.0.0', ['runtime', '__MANY__', 'job', 'shell']) u.upgrade() # Upgrader cannot do this type of move. try: keys = set() cfg['scheduling'].setdefault('graph', {}) cfg['scheduling']['graph'].update( cfg['scheduling'].pop('dependencies')) graphdict = cfg['scheduling']['graph'] for key, value in graphdict.copy().items(): if isinstance(value, dict) and 'graph' in value: graphdict[key] = value['graph'] keys.add(key) if keys: LOG.warning( "deprecated graph items were automatically upgraded in '%s':", descr) LOG.warning( ' * (8.0.0) %s -> %s - for X in:\n%s', u.show_keys(['scheduling', 'dependencies', 'X', 'graph']), u.show_keys(['scheduling', 'graph', 'X']), '\n'.join(sorted(keys)), ) except KeyError: pass
def upg(cfg, descr): """Upgrade old suite configuration.""" u = upgrader(cfg, descr) u.obsolete('6.1.3', ['visualization', 'enable live graph movie']) u.obsolete('7.2.2', ['cylc', 'dummy mode']) u.obsolete('7.2.2', ['cylc', 'simulation mode']) u.obsolete('7.2.2', ['runtime', '__MANY__', 'dummy mode']) u.obsolete('7.2.2', ['runtime', '__MANY__', 'simulation mode']) u.obsolete('7.6.0', ['runtime', '__MANY__', 'enable resurrection']) u.obsolete('7.8.0', ['runtime', '__MANY__', 'suite state polling', 'template']) u.obsolete('7.8.1', ['cylc', 'events', 'reset timer']) u.obsolete('7.8.1', ['cylc', 'events', 'reset inactivity timer']) u.obsolete('7.8.1', ['runtime', '__MANY__', 'events', 'reset timer']) u.obsolete('8.0.0', ['runtime', '__MANY__', 'job', 'shell']) u.upgrade()
def get_upgrader(): nonlocal cfg upg = upgrader(cfg, 'test file') upg.deprecate('1.3', ['item one'], ['item two']) return upg
def test_simple(): """A quick test of overall functionality.""" cfg = { 'item one': 1, 'item two': 'move me up', 'section A': { 'abc': 5, 'cde': 'foo', 'gah': 'bar' }, 'hostnames': { 'host 1': { 'work dir': '/a/b/c', 'running dir': '/a/b/c/d' }, 'host 2': { 'work dir': '/x/b/c', 'running dir': '/x/b/c/d' }, } } x2 = converter(lambda x: 2 * x, 'value x 2') upg = upgrader(cfg, 'test file') # successive upgrades are incremental - at least until I think of a # good way to remember what items have already been translated... upg.deprecate('1.3', ['item one'], ['item ONE'], x2) upg.deprecate('1.3', ['section A'], ['Heading A']) # NOTE change to new item keys here! upg.deprecate('1.3', ['Heading A', 'cde'], ['Heading A', 'CDE']) upg.deprecate('1.4', ['Heading A', 'abc'], ['Heading A', 'abc'], cvtr=x2, silent=True) upg.deprecate('1.4.1', ['item two'], ['Heading A', 'item two'], silent=True) upg.deprecate('1.5', ['hostnames'], ['hosts']) upg.deprecate('1.5', ['hosts', '__MANY__', 'running dir'], ['hosts', '__MANY__', 'run dir']) # obsolete() but with a custom message - `[Heading A]gah` will be deleted: upg.deprecate('1.3', ['Heading A', 'gah'], None, cvtr=converter(lambda x: x, 'Yaba daba do')) upg.upgrade() assert cfg == { 'item ONE': 2, 'Heading A': { 'CDE': 'foo', 'abc': 10, 'item two': 'move me up' }, 'hosts': { 'host 1': { 'work dir': '/a/b/c', 'run dir': '/a/b/c/d' }, 'host 2': { 'work dir': '/x/b/c', 'run dir': '/x/b/c/d' } } }
def setUp(self): self.cfg = OrderedDict() self.cfg['section'] = OrderedDict() self.cfg['section']['a'] = '1' self.cfg['section']['b'] = '2' self.u = upgrader(self.cfg, "1.0 to 2.0")
def upg(cfg, description): u = upgrader(cfg, description) u.obsolete('1.0', ['section3', 'entries']) u.upgrade()
def upg(cfg, descr): """Upgrade old suite configuration.""" u = upgrader(cfg, descr) u.obsolete('6.1.3', ['visualization', 'enable live graph movie']) u.obsolete('7.2.2', ['cylc', 'dummy mode']) u.obsolete('7.2.2', ['cylc', 'simulation mode']) u.obsolete('7.2.2', ['runtime', '__MANY__', 'dummy mode']) u.obsolete('7.2.2', ['runtime', '__MANY__', 'simulation mode']) u.obsolete('7.6.0', ['runtime', '__MANY__', 'enable resurrection']) u.obsolete('7.8.0', ['runtime', '__MANY__', 'suite state polling', 'template']) u.obsolete('7.8.1', ['cylc', 'events', 'reset timer']) u.obsolete('7.8.1', ['cylc', 'events', 'reset inactivity timer']) u.obsolete('7.8.1', ['runtime', '__MANY__', 'events', 'reset timer']) u.obsolete('8.0.0', ['cylc', 'log resolved dependencies']) u.obsolete('8.0.0', ['cylc', 'reference test', 'allow task failures']) u.obsolete('8.0.0', ['cylc', 'reference test', 'live mode suite timeout']) u.obsolete('8.0.0', ['cylc', 'reference test', 'dummy mode suite timeout']) u.obsolete('8.0.0', ['cylc', 'reference test', 'dummy-local mode suite timeout']) u.obsolete('8.0.0', ['cylc', 'reference test', 'simulation mode suite timeout']) u.obsolete('8.0.0', ['cylc', 'reference test', 'required run mode']) u.obsolete('8.0.0', ['cylc', 'reference test', 'suite shutdown event handler']) u.deprecate('8.0.0', ['cylc', 'abort if any task fails'], ['cylc', 'events', 'abort if any task fails']) u.obsolete('8.0.0', ['runtime', '__MANY__', 'job', 'shell']) # TODO uncomment these deprecations when ready - see todo in # [runtime][__MANY__] section. # for job_setting in [ # 'execution polling intervals', # 'execution retry delays', # 'execution time limit', # 'submission polling intervals', # 'submission retry delays' # ]: # u.deprecate( # '8.0.0', # ['runtime', '__MANY__', 'job', job_setting], # ['runtime', '__MANY__', job_setting] # ) # TODO - there are some simple changes to the config (items from [remote] # and [job] moved up 1 level for example) which should be upgraded here. u.upgrade() # Upgrader cannot do this type of move. try: keys = set() cfg['scheduling'].setdefault('graph', {}) cfg['scheduling']['graph'].update( cfg['scheduling'].pop('dependencies')) graphdict = cfg['scheduling']['graph'] for key, value in graphdict.copy().items(): if isinstance(value, dict) and 'graph' in value: graphdict[key] = value['graph'] keys.add(key) if keys: LOG.warning( "deprecated graph items were automatically upgraded in '%s':", descr) LOG.warning( ' * (8.0.0) %s -> %s - for X in:\n%s', u.show_keys(['scheduling', 'dependencies', 'X', 'graph']), u.show_keys(['scheduling', 'graph', 'X']), '\n'.join(sorted(keys)), ) except KeyError: pass
def upg(cfg, descr): """Upgrader.""" u = upgrader(cfg, descr) u.upgrade()