Exemplo n.º 1
0
from cylc.mkdir_p import mkdir_p
import cylc.flags
from cylc.cfgspec.utils import (coerce_interval, coerce_interval_list,
                                DurationFloat)
from cylc.network import PRIVILEGE_LEVELS

coercers['interval_seconds'] = lambda *args: coerce_interval(
    *args, check_syntax_version=False)
coercers['interval_minutes'] = lambda *args: coerce_interval(
    *args, back_comp_unit_factor=60, check_syntax_version=False)
coercers['interval_minutes_list'] = lambda *args: coerce_interval_list(
    *args, back_comp_unit_factor=60, check_syntax_version=False)

SPEC = {
    'process pool size':
    vdr(vtype='integer', default=4),
    'temporary directory':
    vdr(vtype='string'),
    'state dump rolling archive length':
    vdr(vtype='integer', vmin=1, default=10),
    'disable interactive command prompts':
    vdr(vtype='boolean', default=True),
    'enable run directory housekeeping':
    vdr(vtype='boolean', default=False),
    'run directory rolling archive length':
    vdr(vtype='integer', vmin=0, default=2),
    'submission polling intervals':
    vdr(vtype='interval_minutes_list', default=[]),
    'execution polling intervals':
    vdr(vtype='interval_minutes_list', default=[]),
    'task host select command timeout':
Exemplo n.º 2
0
            return [
                str(i).zfill(n_dig) for i in range(int(lower), int(upper) + 1)]
    return value

coercers['cycletime'] = _coerce_cycletime
coercers['cycletime_format'] = _coerce_cycletime_format
coercers['cycletime_time_zone'] = _coerce_cycletime_time_zone
coercers['cycleinterval'] = _coerce_cycleinterval
coercers['final_cycletime'] = _coerce_final_cycletime
coercers['interval'] = coerce_interval
coercers['interval_list'] = coerce_interval_list
coercers['parameter_list'] = _coerce_parameter_list


SPEC = {
    'title': vdr(vtype='string', default=""),
    'description': vdr(vtype='string', default=""),
    'group': vdr(vtype='string', default="(ungrouped)"),
    'URL': vdr(vtype='string', default=""),
    'cylc': {
        'UTC mode': vdr(
            vtype='boolean', default=GLOBAL_CFG.get(['cylc', 'UTC mode'])),
        'cycle point format': vdr(
            vtype='cycletime_format', default=None),
        'cycle point num expanded year digits': vdr(
            vtype='integer', default=0),
        'cycle point time zone': vdr(
            vtype='cycletime_time_zone', default=None),
        'required run mode': vdr(
            vtype='string', options=['live', 'dummy', 'simulation', '']),
        'force run mode': vdr(
Exemplo n.º 3
0
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

from parsec.validate import validator as vdr

SPEC = {
    'boolean': {
        '__MANY__': {
            '__MANY__': vdr(vtype="boolean")
        },
    },
    'integer': {
        '__MANY__': {
            '__MANY__': vdr(vtype="integer")
        },
    },
    'float': {
        '__MANY__': {
            '__MANY__': vdr(vtype="float")
        },
    },
    'string': {
        '__MANY__': {
            '__MANY__': vdr(vtype="string")
Exemplo n.º 4
0
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

from parsec.validate import validator as vdr

SPEC = {
        'boolean' : {
            '__MANY__' : { '__MANY__' : vdr( vtype="boolean" ) },
            }, 
        'integer' : { 
            '__MANY__' : { '__MANY__' : vdr( vtype="integer" ) },
            },
        'float'   : { 
            '__MANY__' : { '__MANY__' : vdr( vtype="float"   ) },
            },
        'string'  : {
            '__MANY__' : { '__MANY__' : vdr( vtype="string"  ) },
            },
        'string_list' : {
            '__MANY__' : { '__MANY__'   : vdr( vtype="string_list" ) },
            },
        'float_list' : {
            '__MANY__' : { '__MANY__' : vdr( vtype="float_list", allow_zeroes=False   ) },
Exemplo n.º 5
0
#!/usr/bin/env python2
"""Check that single-line config print works"""

import os, sys

fpath = os.path.dirname(os.path.abspath(__file__))
# parsec
sys.path.append(fpath + '/../../..')

from parsec.config import config
from parsec.validate import validator as vdr

SPEC = {'foo': {'bar': {'__MANY__': vdr(vtype="string")}}}
cfg = config(SPEC)
cfg.loadcfg("test.rc")

cfg.mdump([['foo', 'bar', 'baz'], ['foo', 'bar', 'qux']],
          oneline=True,
          sparse=True)
Exemplo n.º 6
0
#!/usr/bin/env python
"""
An empty config file should successfully yield an empty sparse config dict.
"""


import os, sys

fpath = os.path.dirname(os.path.abspath(__file__))
# parsec
sys.path.append(fpath + '/../../..')


from parsec.config import config
from parsec.validate import validator as vdr
from parsec.OrderedDict import OrderedDict

SPEC = {
    'meta': {
        'title': vdr(vtype="string")
        }
    }
cfg = config(SPEC)
cfg.loadcfg("empty.rc")

if cfg.get(sparse=True) != OrderedDict():
    sys.exit(1)
Exemplo n.º 7
0
coercers['cycletime'] = _coerce_cycletime
coercers['cycletime_format'] = _coerce_cycletime_format
coercers['cycletime_time_zone'] = _coerce_cycletime_time_zone
coercers['cycleinterval'] = _coerce_cycleinterval
coercers['final_cycletime'] = _coerce_final_cycletime
coercers['interval'] = _coerce_interval
coercers['interval_minutes'] = lambda *a: _coerce_interval(
    *a, back_comp_unit_factor=60)
coercers['interval_seconds'] = _coerce_interval
coercers['interval_list'] = _coerce_interval_list
coercers['interval_minutes_list'] = lambda *a: _coerce_interval_list(
    *a, back_comp_unit_factor=60)
coercers['interval_seconds_list'] = _coerce_interval_list

SPEC = {
    'title': vdr(vtype='string', default=""),
    'description': vdr(vtype='string', default=""),
    'cylc': {
        'UTC mode':
        vdr(vtype='boolean', default=False),
        'cycle point format':
        vdr(vtype='cycletime_format', default=None),
        'cycle point num expanded year digits':
        vdr(vtype='integer', default=0),
        'cycle point time zone':
        vdr(vtype='cycletime_time_zone', default=None),
        'required run mode':
        vdr(vtype='string', options=['live', 'dummy', 'simulation']),
        'force run mode':
        vdr(vtype='string', options=['live', 'dummy', 'simulation']),
        'abort if any task fails':
Exemplo n.º 8
0
import os
from parsec.loadcfg import load_combined
from parsec.validate import validator as vdr
from parsec.util import printcfg
"""
Define items and validators for gcylc config files,
"""

SITE_FILE = os.path.join(os.environ['CYLC_DIR'], 'conf', 'gcylcrc',
                         'themes.rc')
USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gcylc.rc')

cfg = None

SPEC = {
    'initial views': vdr(vtype='string_list', default=["text", "dot"]),
    'ungrouped views': vdr(vtype='string_list', default=[]),
    'use theme': vdr(vtype='string', default="default"),
    'themes': {
        '__MANY__': {
            'inherit': vdr(vtype='string', default="default"),
            'defaults': vdr(vtype='string_list'),
            'waiting': vdr(vtype='string_list'),
            'runahead': vdr(vtype='string_list'),
            'held': vdr(vtype='string_list'),
            'queued': vdr(vtype='string_list'),
            'submitting': vdr(vtype='string_list'),
            'submitted': vdr(vtype='string_list'),
            'submit-failed': vdr(vtype='string_list'),
            'running': vdr(vtype='string_list'),
            'succeeded': vdr(vtype='string_list'),
Exemplo n.º 9
0
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

import os
import sys

from parsec import ParsecError
from parsec.validate import validator as vdr
from parsec.config import config
"""gscan config file format."""

USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gscan.rc')

SPEC = {
    'columns': vdr(vtype='string_list', default=['suite', 'status']),
    'activate on startup': vdr(vtype='boolean', default=False)
}


class gscanconfig(config):
    def check(self):
        cfg = self.get(sparse=True)
        if 'columns' in cfg:
            for column in cfg['columns']:
                if column not in [
                        'host', 'suite', 'title', 'updated', 'status'
                ]:
                    print >> sys.stderr, ("WARNING: illegal column name "
                                          "'" + column + "'")
                    cfg['columns'].remove(column)
Exemplo n.º 10
0
    TASK_STATUSES_ALL, TASK_STATUS_RUNAHEAD, TASK_STATUS_HELD,
    TASK_STATUS_WAITING, TASK_STATUS_EXPIRED, TASK_STATUS_QUEUED,
    TASK_STATUS_READY, TASK_STATUS_SUBMITTED, TASK_STATUS_SUBMIT_FAILED,
    TASK_STATUS_SUBMIT_RETRYING, TASK_STATUS_RUNNING, TASK_STATUS_SUCCEEDED,
    TASK_STATUS_FAILED, TASK_STATUS_RETRYING)


"gcylc config file format."

SITE_FILE = os.path.join(
    os.environ['CYLC_DIR'], 'conf', 'gcylcrc', 'themes.rc')
USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gcylc.rc')

SPEC = {
    'dot icon size': vdr(
        vtype='string',
        default="medium",
        options=["small", "medium", "large", "extra large"]),
    'initial side-by-side views': vdr(vtype='boolean', default=False),
    'initial views': vdr(vtype='string_list', default=["text"]),
    'sort by definition order': vdr(vtype='boolean', default=True),
    'sort column': vdr(
        vtype='string',
        default='none',
        options=[heading for heading in ControlTree.headings if heading is not
                 None] + ['none']),
    'sort column ascending': vdr(vtype='boolean', default=True),
    'task filter highlight color': vdr(vtype='string', default='PowderBlue'),
    'task states to filter out': vdr(
        vtype='string_list',
        default=[TASK_STATUS_RUNAHEAD]),
    'themes': {
Exemplo n.º 11
0
Arquivo: gcylc.py Projeto: kaday/cylc
from parsec import ParsecError
from parsec.config import config, ItemNotFoundError, itemstr
from parsec.validate import validator as vdr
from parsec.upgrade import upgrader
from parsec.util import printcfg

from cylc.task_state import task_state

"gcylc config file format."

SITE_FILE = os.path.join(
    os.environ['CYLC_DIR'], 'conf', 'gcylcrc', 'themes.rc')
USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gcylc.rc')

SPEC = {
    'initial views': vdr(vtype='string_list', default=["text"]),
    'ungrouped views': vdr(vtype='string_list', default=[]),
    'use theme': vdr(vtype='string', default="default"),
    'dot icon size': vdr(
        vtype='string',
        default="medium",
        options=["small", "medium", "large", "extra large"]),
    'sort by definition order': vdr(vtype='boolean', default=True),
    'task filter highlight color': vdr(vtype='string', default='PowderBlue'),
    'initial side-by-side views': vdr(vtype='boolean', default=False),
    'themes': {
        '__MANY__': {
            'inherit': vdr(vtype='string', default="default"),
            'defaults': vdr(vtype='string_list'),
            'waiting': vdr(vtype='string_list'),
            'held': vdr(vtype='string_list'),
Exemplo n.º 12
0
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

import os
import sys

from parsec import ParsecError
from parsec.validate import validator as vdr
from parsec.config import config

"""gscan config file format."""

USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gscan.rc')

SPEC = {
    'columns': vdr(vtype='string_list', default=['suite', 'status']),
    'activate on startup': vdr(vtype='boolean', default=False)
}


class gscanconfig(config):

    def check(self):
        cfg = self.get(sparse=True)
        if 'columns' in cfg:
            for column in cfg['columns']:
                if column not in ['host', 'suite', 'title', 'updated',
                                  'status']:
                    print >> sys.stderr, ("WARNING: illegal column name "
                                          "'" + column + "'")
                    cfg['columns'].remove(column)
Exemplo n.º 13
0
coercers['cycletime'] = _coerce_cycletime
coercers['cycletime_format'] = _coerce_cycletime_format
coercers['cycletime_time_zone'] = _coerce_cycletime_time_zone
coercers['cycleinterval'] = _coerce_cycleinterval
coercers['final_cycletime'] = _coerce_final_cycletime
coercers['interval'] = coerce_interval
coercers['interval_minutes'] = lambda *a: coerce_interval(
    *a, back_comp_unit_factor=60)
coercers['interval_seconds'] = coerce_interval
coercers['interval_list'] = coerce_interval_list
coercers['interval_minutes_list'] = lambda *a: coerce_interval_list(
    *a, back_comp_unit_factor=60)
coercers['interval_seconds_list'] = coerce_interval_list

SPEC = {
    'title': vdr(vtype='string', default=""),
    'description': vdr(vtype='string', default=""),
    'URL': vdr(vtype='string', default=""),
    'cylc': {
        'UTC mode':
        vdr(vtype='boolean', default=GLOBAL_CFG.get(['cylc', 'UTC mode'])),
        'cycle point format':
        vdr(vtype='cycletime_format', default=None),
        'cycle point num expanded year digits':
        vdr(vtype='integer', default=0),
        'cycle point time zone':
        vdr(vtype='cycletime_time_zone', default=None),
        'required run mode':
        vdr(vtype='string', options=['live', 'dummy', 'simulation', '']),
        'force run mode':
        vdr(vtype='string', options=['live', 'dummy', 'simulation', '']),
Exemplo n.º 14
0
from parsec.validate import coercers
from parsec import ParsecError
from parsec.upgrade import upgrader, converter
from cylc.hostuserutil import is_remote_user
from cylc.envvar import expandvars
from cylc.mkdir_p import mkdir_p
import cylc.flags
from cylc.cfgspec.utils import (
    coerce_interval, coerce_interval_list, DurationFloat)
from cylc.network import PRIVILEGE_LEVELS, PRIV_STATE_TOTALS, PRIV_SHUTDOWN

coercers['interval'] = coerce_interval
coercers['interval_list'] = coerce_interval_list

SPEC = {
    'process pool size': vdr(vtype='integer', default=4),
    'temporary directory': vdr(vtype='string'),
    'state dump rolling archive length': vdr(
        vtype='integer', default=10),
    'disable interactive command prompts': vdr(vtype='boolean', default=True),
    'enable run directory housekeeping': vdr(vtype='boolean', default=False),
    'run directory rolling archive length': vdr(
        vtype='integer', default=2),
    'task host select command timeout': vdr(
        vtype='interval', default=DurationFloat(10)),
    'task messaging': {
        'retry interval': vdr(
            vtype='interval', default=DurationFloat(5)),
        'maximum number of tries': vdr(vtype='integer', default=7),
        'connection timeout': vdr(
            vtype='interval', default=DurationFloat(30)),
Exemplo n.º 15
0
import os
from parsec.loadcfg import load_combined
from parsec.validate import validator as vdr
from parsec.util import printcfg

"""
Define items and validators for gcylc config files,
"""

SITE_FILE = os.path.join( os.environ['CYLC_DIR'], 'conf', 'gcylcrc', 'themes.rc' )
USER_FILE = os.path.join( os.environ['HOME'], '.cylc', 'gcylc.rc' )

cfg = None

SPEC = {
    'initial views' : vdr( vtype='string_list', default=["text","dot"] ),
    'ungrouped views' : vdr( vtype='string_list', default=[] ),
    'use theme'     : vdr( vtype='string', default="default" ),
    'themes' : {
        '__MANY__' : {
            'inherit'       : vdr( vtype='string', default="default" ),
            'defaults'      : vdr( vtype='string_list' ),
            'waiting'       : vdr( vtype='string_list' ),
            'runahead'      : vdr( vtype='string_list' ),
            'held'          : vdr( vtype='string_list' ),
            'queued'        : vdr( vtype='string_list' ),
            'submitting'    : vdr( vtype='string_list' ),
            'submitted'     : vdr( vtype='string_list' ),
            'submit-failed' : vdr( vtype='string_list' ),
            'running'       : vdr( vtype='string_list' ),
            'succeeded'     : vdr( vtype='string_list' ),
Exemplo n.º 16
0
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
"""Legal items and validators for the parsec test config file."""

from parsec.validate import validator as vdr

SPEC = {
    'title': vdr(vtype="string"),
    'single values': {
        'integers': {
            '__MANY__': vdr(vtype="integer")
        },
        'booleans': {
            '__MANY__': vdr(vtype="boolean")
        },
        'floats': {
            '__MANY__': vdr(vtype="float")
        },
        'strings': {
            '__MANY__': vdr(vtype="string")
        },
        'strings with internal comments': {
            '__MANY__': vdr(vtype="string")
Exemplo n.º 17
0
#!/usr/bin/env python
"""
An empty config file should successfully yield an empty sparse config dict.
"""

import os, sys

fpath = os.path.dirname(os.path.abspath(__file__))
# parsec
sys.path.append(fpath + '/../../..')

from parsec.config import config
from parsec.validate import validator as vdr
from parsec.OrderedDict import OrderedDict

SPEC = {'meta': {'title': vdr(vtype="string")}}
cfg = config(SPEC)
cfg.loadcfg("empty.rc")

if cfg.get(sparse=True) != OrderedDict():
    sys.exit(1)
Exemplo n.º 18
0
"Define all legal items and values for cylc suite definition files."

def _coerce_cycletime( value, keys, args ):
    """Coerce value to a cycle time."""
    value = _strip_and_unquote( keys, value )
    try:
        return ct( value ).get()
    except:
        #raise
        raise IllegalValueError( 'cycle time', keys, value )

coercers['cycletime'] = _coerce_cycletime

SPEC = {
    'title'                                   : vdr( vtype='string', default="" ),
    'description'                             : vdr( vtype='string', default="" ),
    'cylc' : {
        'UTC mode'                            : vdr( vtype='boolean', default=False),
        'required run mode'                   : vdr( vtype='string', options=['live','dummy','simulation'] ),
        'force run mode'                      : vdr( vtype='string', options=['live','dummy','simulation'] ),
        'abort if any task fails'             : vdr( vtype='boolean', default=False ),
        'log resolved dependencies'           : vdr( vtype='boolean', default=False ),
        'job submission' : {
            'batch size'                      : vdr( vtype='integer', vmin=1, default=10 ),
            'delay between batches'           : vdr( vtype='integer', vmin=0, default=0  ),
            },
        'event handler submission' : {
            'batch size'                      : vdr( vtype='integer', vmin=1, default=10 ),
            'delay between batches'           : vdr( vtype='integer', vmin=0, default=0  ),
            },
Exemplo n.º 19
0
coercers['cycletime_format'] = _coerce_cycletime_format
coercers['cycletime_time_zone'] = _coerce_cycletime_time_zone
coercers['cycleinterval'] = _coerce_cycleinterval
coercers['final_cycletime'] = _coerce_final_cycletime
coercers['interval'] = _coerce_interval
coercers['interval_minutes'] = lambda *a: _coerce_interval(
    *a, back_comp_unit_factor=60)
coercers['interval_seconds'] = _coerce_interval
coercers['interval_list'] = _coerce_interval_list
coercers['interval_minutes_list'] = lambda *a: _coerce_interval_list(
    *a, back_comp_unit_factor=60)
coercers['interval_seconds_list'] = _coerce_interval_list


SPEC = {
    'title'                                   : vdr( vtype='string', default="" ),
    'description'                             : vdr( vtype='string', default="" ),
    'cylc' : {
        'UTC mode'                            : vdr( vtype='boolean', default=False),
        'cycle point format'                  : vdr( vtype='cycletime_format', default=None),
        'cycle point num expanded year digits': vdr( vtype='integer', default=0),
        'cycle point time zone'               : vdr( vtype='cycletime_time_zone', default=None),
        'required run mode'                   : vdr( vtype='string', options=['live','dummy','simulation'] ),
        'force run mode'                      : vdr( vtype='string', options=['live','dummy','simulation'] ),
        'abort if any task fails'             : vdr( vtype='boolean', default=False ),
        'log resolved dependencies'           : vdr( vtype='boolean', default=False ),
        'environment' : {
            '__MANY__'                        : vdr( vtype='string' ),
            },
        'event hooks' : {
            'startup handler'                 : vdr( vtype='string_list', default=[] ),
Exemplo n.º 20
0
#C:
#C: You should have received a copy of the GNU General Public License
#C: along with this program.  If not, see <http://www.gnu.org/licenses/>.

from parsec.validate import validator as vdr
from parsec.validate import validate, expand, get_defaults
from parsec.upgrade import upgrader, converter
from parsec.fileparse import parse
"""
Define all legal items and values for cylc suite definition files.
"""

cfg = None

SPEC = {
    'title': vdr(vtype='string', default="No title provided"),
    'description': vdr(vtype='string', default="No description provided"),
    'cylc': {
        'UTC mode':
        vdr(vtype='boolean', default=False),
        'required run mode':
        vdr(vtype='string', options=['live', 'dummy', 'simulation']),
        'force run mode':
        vdr(vtype='string', options=['live', 'dummy', 'simulation']),
        'abort if any task fails':
        vdr(vtype='boolean', default=False),
        'log resolved dependencies':
        vdr(vtype='boolean', default=False),
        'job submission': {
            'batch size': vdr(vtype='integer', vmin=1, default=10),
            'delay between batches': vdr(vtype='integer', vmin=0, default=0),
Exemplo n.º 21
0
Arquivo: gcylc.py Projeto: kaday/cylc
from parsec import ParsecError
from parsec.config import config, ItemNotFoundError, itemstr
from parsec.validate import validator as vdr
from parsec.upgrade import upgrader
from parsec.util import printcfg

from cylc.task_state import task_state

"gcylc config file format."

SITE_FILE = os.path.join(os.environ["CYLC_DIR"], "conf", "gcylcrc", "themes.rc")
USER_FILE = os.path.join(os.environ["HOME"], ".cylc", "gcylc.rc")

SPEC = {
    "initial views": vdr(vtype="string_list", default=["text"]),
    "ungrouped views": vdr(vtype="string_list", default=[]),
    "use theme": vdr(vtype="string", default="default"),
    "dot icon size": vdr(vtype="string", default="medium", options=["small", "medium", "large", "extra large"]),
    "sort by definition order": vdr(vtype="boolean", default=True),
    "task filter highlight color": vdr(vtype="string", default="PowderBlue"),
    "initial side-by-side views": vdr(vtype="boolean", default=False),
    "themes": {
        "__MANY__": {
            "inherit": vdr(vtype="string", default="default"),
            "defaults": vdr(vtype="string_list"),
            "waiting": vdr(vtype="string_list"),
            "held": vdr(vtype="string_list"),
            "queued": vdr(vtype="string_list"),
            "ready": vdr(vtype="string_list"),
            "expired": vdr(vtype="string_list"),
Exemplo n.º 22
0
Arquivo: suite.py Projeto: jontyq/cylc
        return [int(item) for item in items]


coercers['cycletime'] = _coerce_cycletime
coercers['cycletime_format'] = _coerce_cycletime_format
coercers['cycletime_time_zone'] = _coerce_cycletime_time_zone
coercers['cycleinterval'] = _coerce_cycleinterval
coercers['final_cycletime'] = _coerce_final_cycletime
coercers['interval'] = coerce_interval
coercers['interval_list'] = coerce_interval_list
coercers['parameter_list'] = _coerce_parameter_list


SPEC = {
    'meta': {
        'description': vdr(vtype='string', default=""),
        'group': vdr(vtype='string', default=""),
        'title': vdr(vtype='string', default=""),
        'URL': vdr(vtype='string', default=""),
        '__MANY__': vdr(vtype='string', default=""),
    },
    'cylc': {
        'UTC mode': vdr(
            vtype='boolean', default=GLOBAL_CFG.get(['cylc', 'UTC mode'])),
        'cycle point format': vdr(
            vtype='cycletime_format', default=None),
        'cycle point num expanded year digits': vdr(
            vtype='integer', default=0),
        'cycle point time zone': vdr(
            vtype='cycletime_time_zone', default=None),
        'required run mode': vdr(
Exemplo n.º 23
0
"""gscan config file format."""

import os
import sys

from parsec import ParsecError
from parsec.config import config
from parsec.validate import coercers, validator as vdr
from cylc.cfgspec.utils import (coerce_interval, DurationFloat)


coercers['interval'] = coerce_interval
USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gscan.rc')

SPEC = {
    'activate on startup': vdr(vtype='boolean', default=False),
    'columns': vdr(vtype='string_list', default=['suite', 'status']),
    'suite listing update interval': vdr(
        vtype='interval', default=DurationFloat(60)),
    'suite status update interval': vdr(
        vtype='interval', default=DurationFloat(15)),
    'window size': vdr(vtype='integer_list', default=[300, 200]),
    'hide main menubar': vdr(vtype='boolean', default=True),
}


class GScanConfig(config):
    """Configuration for "gscan"."""

    COL_GROUP = "Group"
    COL_HOST = "Host"
Exemplo n.º 24
0
from copy import deepcopy, copy

from parsec.config import config, ItemNotFoundError, itemstr
from parsec.validate import validator as vdr
from parsec.upgrade import upgrader
from parsec.util import printcfg

from cylc.task_state import task_state

"gcylc config file format."

SITE_FILE = os.path.join( os.environ['CYLC_DIR'], 'conf', 'gcylcrc', 'themes.rc' )
USER_FILE = os.path.join( os.environ['HOME'], '.cylc', 'gcylc.rc' )

SPEC = {
    'initial views'   : vdr( vtype='string_list', default=["text"] ),
    'ungrouped views' : vdr( vtype='string_list', default=[] ),
    'use theme'       : vdr( vtype='string', default="default" ),
    'dot icon size'   : vdr( vtype='string', default="medium",
                             options=["small","medium","large"]),
    'sort by definition order' : vdr( vtype='boolean', default=True ), 
    'themes' : {
        '__MANY__' : {
            'inherit'       : vdr( vtype='string', default="default" ),
            'defaults'      : vdr( vtype='string_list' ),
            'waiting'       : vdr( vtype='string_list' ),
            'runahead'      : vdr( vtype='string_list' ),
            'held'          : vdr( vtype='string_list' ),
            'queued'        : vdr( vtype='string_list' ),
            'ready'         : vdr( vtype='string_list' ),
            'submitted'     : vdr( vtype='string_list' ),
Exemplo n.º 25
0
from parsec.validate import coercers
from parsec import ParsecError
from parsec.upgrade import upgrader, converter
from cylc.hostuserutil import is_remote_user
from cylc.envvar import expandvars
from cylc.mkdir_p import mkdir_p
import cylc.flags
from cylc.cfgspec.utils import (
    coerce_interval, coerce_interval_list, DurationFloat)
from cylc.network import PRIVILEGE_LEVELS, PRIV_STATE_TOTALS, PRIV_SHUTDOWN

coercers['interval'] = coerce_interval
coercers['interval_list'] = coerce_interval_list

SPEC = {
    'process pool size': vdr(vtype='integer', default=4),
    'temporary directory': vdr(vtype='string'),
    'state dump rolling archive length': vdr(
        vtype='integer', default=10),
    'disable interactive command prompts': vdr(vtype='boolean', default=True),
    'enable run directory housekeeping': vdr(vtype='boolean', default=False),
    'run directory rolling archive length': vdr(
        vtype='integer', default=2),
    'task host select command timeout': vdr(
        vtype='interval', default=DurationFloat(10)),
    'task messaging': {
        'retry interval': vdr(
            vtype='interval', default=DurationFloat(5)),
        'maximum number of tries': vdr(vtype='integer', default=7),
        'connection timeout': vdr(
            vtype='interval', default=DurationFloat(30)),
Exemplo n.º 26
0
from cylc.cfgspec.utils import coerce_interval_list
from cylc.network import PRIVILEGE_LEVELS


"Cylc site and user configuration file spec."

coercers['interval_seconds'] = lambda *args: coerce_interval(
    *args, check_syntax_version=False)
coercers['interval_minutes'] = lambda *args: coerce_interval(
    *args, back_comp_unit_factor=60, check_syntax_version=False)
coercers['interval_minutes_list'] = lambda *args: coerce_interval_list(
    *args, back_comp_unit_factor=60, check_syntax_version=False)


SPEC = {
    'process pool size': vdr(vtype='integer', default=4),
    'temporary directory': vdr(vtype='string'),
    'state dump rolling archive length': vdr(
        vtype='integer', vmin=1, default=10),
    'disable interactive command prompts': vdr(vtype='boolean', default=True),
    'enable run directory housekeeping': vdr(vtype='boolean', default=False),
    'run directory rolling archive length': vdr(
        vtype='integer', vmin=0, default=2),
    'submission polling intervals': vdr(
        vtype='interval_minutes_list', default=[]),
    'execution polling intervals': vdr(
        vtype='interval_minutes_list', default=[]),

    'task host select command timeout': vdr(
        vtype='interval_seconds', default=10),
    'task messaging': {
Exemplo n.º 27
0
from cylc.mkdir_p import mkdir_p
import cylc.flags
from cylc.cfgspec.suite import coerce_interval
from cylc.cfgspec.suite import coerce_interval_list


"Cylc site and user configuration file spec."

coercers['interval_seconds'] = (
    lambda *args: coerce_interval(*args, check_syntax_version=False))
coercers['interval_minutes_list'] = (
    lambda *args: coerce_interval_list(*args, back_comp_unit_factor=60,
                                       check_syntax_version=False))

SPEC = {
    'process pool size'                   : vdr( vtype='integer', default=None ),
    'temporary directory'                 : vdr( vtype='string' ),
    'state dump rolling archive length'   : vdr( vtype='integer', vmin=1, default=10 ),
    'disable interactive command prompts' : vdr( vtype='boolean', default=True ),
    'enable run directory housekeeping'   : vdr( vtype='boolean', default=False ),
    'run directory rolling archive length': vdr( vtype='integer', vmin=0, default=2 ),
    'submission polling intervals'        : vdr( vtype='interval_minutes_list', default=[]),
    'execution polling intervals'         : vdr( vtype='interval_minutes_list', default=[]),

    'task host select command timeout'    : vdr( vtype='interval_seconds', default=10),
    'task messaging' : {
        'retry interval'                  : vdr( vtype='interval_seconds', default=5),
        'maximum number of tries'         : vdr( vtype='integer', vmin=1, default=7 ),
        'connection timeout'              : vdr( vtype='interval_seconds', default=30),

        },
Exemplo n.º 28
0
#!/usr/bin/env python

import os, sys

fpath = os.path.dirname(os.path.abspath(__file__))
# parsec
sys.path.append( fpath + '/../../..' )

"""
Check that single-line config print works
""" 

from parsec.config import config
from parsec.validate import validator as vdr
from parsec.OrderedDict import OrderedDict

SPEC = { 'foo' : { 'bar' : { '__MANY__' : vdr( vtype="string" ) } } }
cfg = config( SPEC )
cfg.loadcfg( "test.rc" )

cfg.mdump ( [['foo','bar','baz'],['foo','bar','qux']], oneline=True, sparse=True)
Exemplo n.º 29
0
from parsec import ParsecError
from parsec.upgrade import upgrader, converter
from cylc.hostuserutil import is_remote_user
from cylc.envvar import expandvars
from cylc.mkdir_p import mkdir_p
import cylc.flags
from cylc.cfgspec.utils import (coerce_interval, coerce_interval_list,
                                DurationFloat)
from cylc.network import PRIVILEGE_LEVELS, PRIV_STATE_TOTALS, PRIV_SHUTDOWN

coercers['interval'] = coerce_interval
coercers['interval_list'] = coerce_interval_list

SPEC = {
    'process pool size':
    vdr(vtype='integer', default=4),
    'temporary directory':
    vdr(vtype='string'),
    'state dump rolling archive length':
    vdr(vtype='integer', default=10),
    'disable interactive command prompts':
    vdr(vtype='boolean', default=True),
    'enable run directory housekeeping':
    vdr(vtype='boolean', default=False),
    'run directory rolling archive length':
    vdr(vtype='integer', default=2),
    'task host select command timeout':
    vdr(vtype='interval', default=DurationFloat(10)),
    'task messaging': {
        'retry interval': vdr(vtype='interval', default=DurationFloat(5)),
        'maximum number of tries': vdr(vtype='integer', default=7),
Exemplo n.º 30
0
"""gscan config file format."""

import os
import sys

from parsec import ParsecError
from parsec.config import config
from parsec.validate import coercers, validator as vdr
from cylc.cfgspec.utils import (coerce_interval, DurationFloat)

coercers['interval'] = coerce_interval
USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gscan.rc')

SPEC = {
    'activate on startup':
    vdr(vtype='boolean', default=False),
    'columns':
    vdr(vtype='string_list', default=['suite', 'status']),
    'suite listing update interval':
    vdr(vtype='interval', default=DurationFloat(60)),
    'suite status update interval':
    vdr(vtype='interval', default=DurationFloat(15)),
    'window size':
    vdr(vtype='integer_list', default=[300, 200]),
    'hide main menubar':
    vdr(vtype='boolean', default=True),
}


class GScanConfig(config):
    """Configuration for "gscan"."""
Exemplo n.º 31
0
    TASK_STATUSES_ALL, TASK_STATUS_RUNAHEAD, TASK_STATUS_HELD,
    TASK_STATUS_WAITING, TASK_STATUS_EXPIRED, TASK_STATUS_QUEUED,
    TASK_STATUS_READY, TASK_STATUS_SUBMITTED, TASK_STATUS_SUBMIT_FAILED,
    TASK_STATUS_SUBMIT_RETRYING, TASK_STATUS_RUNNING, TASK_STATUS_SUCCEEDED,
    TASK_STATUS_FAILED, TASK_STATUS_RETRYING)

"gcylc config file format."

SITE_FILE = os.path.join(os.environ['CYLC_DIR'], 'conf', 'gcylcrc',
                         'themes.rc')
USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gcylc.rc')

SPEC = {
    'dot icon size':
    vdr(vtype='string',
        default="medium",
        options=["small", "medium", "large", "extra large"]),
    'initial side-by-side views':
    vdr(vtype='boolean', default=False),
    'initial views':
    vdr(vtype='string_list', default=["text"]),
    'sort by definition order':
    vdr(vtype='boolean', default=True),
    'sort column':
    vdr(vtype='string',
        default='none',
        options=[
            heading for heading in ControlTree.headings if heading is not None
        ] + ['none']),
    'sort column ascending':
    vdr(vtype='boolean', default=True),
Exemplo n.º 32
0
from cylc.task_state import (
    TASK_STATUSES_ALL, TASK_STATUS_RUNAHEAD, TASK_STATUS_HELD,
    TASK_STATUS_WAITING, TASK_STATUS_EXPIRED, TASK_STATUS_QUEUED,
    TASK_STATUS_READY, TASK_STATUS_SUBMITTED, TASK_STATUS_SUBMIT_FAILED,
    TASK_STATUS_SUBMIT_RETRYING, TASK_STATUS_RUNNING, TASK_STATUS_SUCCEEDED,
    TASK_STATUS_FAILED, TASK_STATUS_RETRYING)
from cylc.cfgspec.utils import (coerce_interval, DurationFloat)


coercers['interval'] = coerce_interval
SITE_FILE = os.path.join(
    os.environ['CYLC_DIR'], 'conf', 'gcylcrc', 'themes.rc')
USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gcylc.rc')
SPEC = {
    'dot icon size': vdr(
        vtype='string',
        default="medium",
        options=["small", "medium", "large", "extra large"]),
    'initial side-by-side views': vdr(vtype='boolean', default=False),
    'initial views': vdr(vtype='string_list', default=["text"]),
    'maximum update interval': vdr(
        vtype='interval', default=DurationFloat(15)),
    'sort by definition order': vdr(vtype='boolean', default=True),
    'sort column': vdr(
        vtype='string',
        default='none',
        options=[heading for heading in ControlTree.headings if heading is not
                 None] + ['none']),
    'sort column ascending': vdr(vtype='boolean', default=True),
    'task filter highlight color': vdr(vtype='string', default='PowderBlue'),
    'task states to filter out': vdr(
        vtype='string_list',
Exemplo n.º 33
0
coercers["cycletime"] = _coerce_cycletime
coercers["cycletime_format"] = _coerce_cycletime_format
coercers["cycletime_time_zone"] = _coerce_cycletime_time_zone
coercers["cycleinterval"] = _coerce_cycleinterval
coercers["final_cycletime"] = _coerce_final_cycletime
coercers["interval"] = coerce_interval
coercers["interval_minutes"] = lambda *a: coerce_interval(*a, back_comp_unit_factor=60)
coercers["interval_seconds"] = coerce_interval
coercers["interval_list"] = coerce_interval_list
coercers["interval_minutes_list"] = lambda *a: coerce_interval_list(*a, back_comp_unit_factor=60)
coercers["interval_seconds_list"] = coerce_interval_list
coercers["parameter_list"] = _coerce_parameter_list


SPEC = {
    "title": vdr(vtype="string", default=""),
    "description": vdr(vtype="string", default=""),
    "group": vdr(vtype="string", default="(ungrouped)"),
    "URL": vdr(vtype="string", default=""),
    "cylc": {
        "UTC mode": vdr(vtype="boolean", default=GLOBAL_CFG.get(["cylc", "UTC mode"])),
        "cycle point format": vdr(vtype="cycletime_format", default=None),
        "cycle point num expanded year digits": vdr(vtype="integer", default=0),
        "cycle point time zone": vdr(vtype="cycletime_time_zone", default=None),
        "required run mode": vdr(vtype="string", options=["live", "dummy", "simulation", ""]),
        "force run mode": vdr(vtype="string", options=["live", "dummy", "simulation", ""]),
        "abort if any task fails": vdr(vtype="boolean", default=False),
        "health check interval": vdr(vtype="interval", default=None),
        "log resolved dependencies": vdr(vtype="boolean", default=False),
        "disable automatic shutdown": vdr(vtype="boolean", default=False),
        "environment": {"__MANY__": vdr(vtype="string")},
Exemplo n.º 34
0
from parsec.config import config, ItemNotFoundError, itemstr
from parsec.validate import validator as vdr
from parsec.upgrade import upgrader
from parsec.util import printcfg

from cylc.task_state import task_state

"gcylc config file format."

SITE_FILE = os.path.join(os.environ['CYLC_DIR'], 'conf', 'gcylcrc',
                         'themes.rc')
USER_FILE = os.path.join(os.environ['HOME'], '.cylc', 'gcylc.rc')

SPEC = {
    'initial views':
    vdr(vtype='string_list', default=["text"]),
    'ungrouped views':
    vdr(vtype='string_list', default=[]),
    'use theme':
    vdr(vtype='string', default="default"),
    'dot icon size':
    vdr(vtype='string', default="medium", options=["small", "medium",
                                                   "large"]),
    'sort by definition order':
    vdr(vtype='boolean', default=True),
    'themes': {
        '__MANY__': {
            'inherit': vdr(vtype='string', default="default"),
            'defaults': vdr(vtype='string_list'),
            'waiting': vdr(vtype='string_list'),
            'held': vdr(vtype='string_list'),
Exemplo n.º 35
0
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

from parsec.validate import validator as vdr

"""
Legal items and validators for the parsec test config file.
"""

SPEC = {
        'title' : vdr( vtype="string" ),
        'single values' :
        {
            'integers' : { '__MANY__' : vdr( vtype="integer" ) },
            'booleans' : { '__MANY__' : vdr( vtype="boolean" ) },
            'floats'   : { '__MANY__' : vdr( vtype="float"   ) },
            'strings'  : { '__MANY__' : vdr( vtype="string"  ) },
            'strings with internal comments'  : { '__MANY__' : vdr( vtype="string"  ) },
            'multiline strings'  : { '__MANY__' : vdr( vtype="string"  ) },
            'multiline strings with internal comments'  : { '__MANY__' : vdr( vtype="string"  ) },
             },
        'list values' :
        {
            'string lists' :
            {
                '__MANY__'   : vdr( vtype="string_list"  ),
Exemplo n.º 36
0
#!/usr/bin/env python

import os, sys

fpath = os.path.dirname(os.path.abspath(__file__))
# parsec
sys.path.append(fpath + '/../../..')
"""
An empty config file should successfully yield an empty sparse config dict.
"""

from parsec.config import config
from parsec.validate import validator as vdr
from parsec.OrderedDict import OrderedDict

SPEC = {'title': vdr(vtype="string")}
cfg = config(SPEC)
cfg.loadcfg("empty.rc")

if cfg.get(sparse=True) != OrderedDict():
    sys.exit(1)
Exemplo n.º 37
0
#!/usr/bin/env python

import os, sys

fpath = os.path.dirname(os.path.abspath(__file__))
# parsec
sys.path.append( fpath + '/../../..' )

"""
A missing config file should successfully yield an empty sparse config dict.
""" 

from parsec.config import config
from parsec.validate import validator as vdr
from parsec.OrderedDict import OrderedDict

SPEC = { 'title' : vdr( vtype="string" ) }
cfg = config( SPEC )
cfg.loadcfg( "missing.rc" )

if cfg.get(sparse=True) != OrderedDict():
    sys.exit(1)
Exemplo n.º 38
0
    else:
        return [int(item) for item in items]


coercers['cycletime'] = _coerce_cycletime
coercers['cycletime_format'] = _coerce_cycletime_format
coercers['cycletime_time_zone'] = _coerce_cycletime_time_zone
coercers['cycleinterval'] = _coerce_cycleinterval
coercers['final_cycletime'] = _coerce_final_cycletime
coercers['interval'] = coerce_interval
coercers['interval_list'] = coerce_interval_list
coercers['parameter_list'] = _coerce_parameter_list

SPEC = {
    'meta': {
        'description': vdr(vtype='string', default=""),
        'group': vdr(vtype='string', default=""),
        'title': vdr(vtype='string', default=""),
        'URL': vdr(vtype='string', default=""),
        '__MANY__': vdr(vtype='string', default=""),
    },
    'cylc': {
        'UTC mode':
        vdr(vtype='boolean', default=glbl_cfg().get(['cylc', 'UTC mode'])),
        'cycle point format':
        vdr(vtype='cycletime_format', default=None),
        'cycle point num expanded year digits':
        vdr(vtype='integer', default=0),
        'cycle point time zone':
        vdr(vtype='cycletime_time_zone', default=None),
        'required run mode':
Exemplo n.º 39
0
from cylc.cfgspec.utils import coerce_interval_list
from cylc.network import PRIVILEGE_LEVELS


"Cylc site and user configuration file spec."

coercers['interval_seconds'] = lambda *args: coerce_interval(
    *args, check_syntax_version=False)
coercers['interval_minutes'] = lambda *args: coerce_interval(
    *args, back_comp_unit_factor=60, check_syntax_version=False)
coercers['interval_minutes_list'] = lambda *args: coerce_interval_list(
    *args, back_comp_unit_factor=60, check_syntax_version=False)


SPEC = {
    'process pool size': vdr(vtype='integer', default=4),
    'temporary directory': vdr(vtype='string'),
    'state dump rolling archive length': vdr(
        vtype='integer', vmin=1, default=10),
    'disable interactive command prompts': vdr(vtype='boolean', default=True),
    'enable run directory housekeeping': vdr(vtype='boolean', default=False),
    'run directory rolling archive length': vdr(
        vtype='integer', vmin=0, default=2),
    'submission polling intervals': vdr(
        vtype='interval_minutes_list', default=[]),
    'execution polling intervals': vdr(
        vtype='interval_minutes_list', default=[]),

    'task host select command timeout': vdr(
        vtype='interval_seconds', default=10),
    'task messaging': {
Exemplo n.º 40
0
from parsec import ParsecError
from parsec.config import config, ItemNotFoundError, itemstr
from parsec.validate import validator as vdr
from parsec.upgrade import upgrader
from parsec.util import printcfg

from cylc.task_state import task_state

"gcylc config file format."

SITE_FILE = os.path.join( os.environ['CYLC_DIR'], 'conf', 'gcylcrc', 'themes.rc' )
USER_FILE = os.path.join( os.environ['HOME'], '.cylc', 'gcylc.rc' )

SPEC = {
    'initial views'   : vdr( vtype='string_list', default=["text"] ),
    'ungrouped views' : vdr( vtype='string_list', default=[] ),
    'use theme'       : vdr( vtype='string', default="default" ),
    'dot icon size'   : vdr( vtype='string', default="medium",
                             options=["small","medium","large", "extra large"]),
    'sort by definition order' : vdr( vtype='boolean', default=True ), 
    'task filter highlight color' : vdr(vtype='string', default='PowderBlue'),
    'initial side-by-side views' : vdr(vtype='boolean', default=False),
    'themes' : {
        '__MANY__' : {
            'inherit'       : vdr( vtype='string', default="default" ),
            'defaults'      : vdr( vtype='string_list' ),
            'waiting'       : vdr( vtype='string_list' ),
            'held'          : vdr( vtype='string_list' ),
            'queued'        : vdr( vtype='string_list' ),
            'ready'         : vdr( vtype='string_list' ),