Beispiel #1
0
def get_reactions(service_dir, service_name, service_ver, config):
    """
    Gets the reaction description from a service.

    Keyword arguments:
        service_dir -- top level service directory
        service_name -- name of service
        service_ver -- service version
        config -- dict to template reaction with
    """
    reactions_desc = _get_service_file(service_dir, service_name, service_ver,
            'react', config=config)

    jsonschema.validate(reactions_desc, _reaction_schema)

    for reaction in reactions_desc:
        actions = []
        for action in reaction['execute']:
            if '.' not in action:
                actions.append(service_name + '.' + action)
            else:
                actions.append(action)

        when = reaction['when']

        # Prepend service name if relative path
        for i in ['files_modified', 'files_created', 'files']:
            if i in when:
                when[i] = _prepend_service_name(service_name, when[i])

        reaction['execute'] = actions

    return reactions_desc
Beispiel #2
0
def get_service_actions(service_dir, service_name, service_ver):
    """
    Gets the actions supported by a service

    Keyword arguments:
        service_dir -- top level service directory
        service_name -- name of service
        service_ver -- service version
    """
    action_desc = _get_service_file(service_dir, service_name, service_ver,
            'actions')

    result = {}
    for k,v in action_desc.items():
        if '.' in k:
            raise ValueError('Key {} in {} v{} is invalid, no dots allowed'.format(
                k, service_name, service_ver))
        jsonschema.validate(v, _action_schema)

        if 'not_after' in v:
            # Prepend service name and dots to any not_after items
            not_after = []
            for subitem in v['not_after']:
                if '.' not in subitem:
                    not_after.append(service_name + '.' + subitem)
                else:
                    not_after.append(subitem)

            v['not_after'] = not_after


        # Prepend dot for the action name always
        result[service_name + '.' + k] = v

    return result
Beispiel #3
0
def get_service_actions(service_dir, service_name, service_ver, config):
    """
    Gets the actions supported by a service

    Keyword arguments:
        service_dir -- top level service directory
        service_name -- name of service
        service_ver -- service version
        config -- dict to template action with
    """
    action_desc = _get_service_file(service_dir,
                                    service_name,
                                    service_ver,
                                    'actions',
                                    config=config)

    result = {}
    for k, v in action_desc.items():
        if '.' in k:
            raise ValueError(
                'Key {} in {} v{} is invalid, no dots allowed'.format(
                    k, service_name, service_ver))
        jsonschema.validate(v, _action_schema)

        if 'not_after' in v:
            # Prepend service name and dots to any not_after items
            not_after = []
            for subitem in v['not_after']:
                if '.' not in subitem:
                    not_after.append(service_name + '.' + subitem)
                else:
                    not_after.append(subitem)

            v['not_after'] = not_after

        # Prepend dot for the action name always
        result[service_name + '.' + k] = v

    return result
Beispiel #4
0
def get_reactions(service_dir, service_name, service_ver, config):
    """
    Gets the reaction description from a service.

    Keyword arguments:
        service_dir -- top level service directory
        service_name -- name of service
        service_ver -- service version
        config -- dict to template reaction with
    """
    reactions_desc = _get_service_file(service_dir,
                                       service_name,
                                       service_ver,
                                       'react',
                                       config=config)

    jsonschema.validate(reactions_desc, _reaction_schema)

    for reaction in reactions_desc:
        actions = []
        for action in reaction['execute']:
            if '.' not in action:
                actions.append(service_name + '.' + action)
            else:
                actions.append(action)

        when = reaction['when']

        # Prepend service name if relative path
        for i in ['files_modified', 'files_created', 'files']:
            if i in when:
                when[i] = _prepend_service_name(service_name, when[i])

        reaction['execute'] = actions

    return reactions_desc