HEX
Server: Apache
System: Linux sg241.singhost.net 2.6.32-896.16.1.lve1.4.51.el6.x86_64 #1 SMP Wed Jan 17 13:19:23 EST 2018 x86_64
User: honghock (909)
PHP: 8.0.30
Disabled: passthru,system,shell_exec,show_source,exec,popen,proc_open
Upload Files
File: //proc/self/root/usr/lib/python2.7/site-packages/salt/renderers/dson.py
# -*- coding: utf-8 -*-
'''
DSON Renderer for Salt

This renderer is intended for demonstration purposes. Information on the DSON
spec can be found `here`__.

.. __: http://vpzomtrrfrt.github.io/DSON/

This renderer requires `Dogeon`__ (installable via pip)

.. __: https://github.com/soasme/dogeon
'''

from __future__ import absolute_import, print_function, unicode_literals

# Import python libs
import logging

try:
    import dson
except ImportError:
    dson = None

# Import salt libs
from salt.ext import six

log = logging.getLogger(__name__)


def __virtual__():
    if dson is None:
        return (False, 'The dogeon Python package is not installed')
    return True


def render(dson_input, saltenv='base', sls='', **kwargs):
    '''
    Accepts DSON data as a string or as a file object and runs it through the
    JSON parser.

    :rtype: A Python data structure
    '''
    if not isinstance(dson_input, six.string_types):
        dson_input = dson_input.read()

    log.debug('DSON input = %s', dson_input)

    if dson_input.startswith('#!'):
        dson_input = dson_input[(dson_input.find('\n') + 1):]
    if not dson_input.strip():
        return {}
    return dson.loads(dson_input)