Пример #1
0
def serialize_config(config, escape_dollar=False, original=None):
    yaml = YAML(typ='rt')

    if escape_dollar:
        yaml.representer.add_representer(str, serialize_string_escape_dollar)
        yaml.representer.add_representer(six.text_type,
                                         serialize_string_escape_dollar)
    else:
        yaml.representer.add_representer(str, serialize_string)
        yaml.representer.add_representer(six.text_type, serialize_string)

    yaml.representer.add_representer(Config, serialize_dict_type)
    yaml.representer.add_representer(ManifestItemVersion, serialize_dict_type)

    yaml.default_flow_style = False
    yaml.sort_keys = False
    yaml.preserve_quotes = True
    yaml.explicit_start = True
    yaml.sort_base_mapping_type_on_output = False
    yaml.indent(mapping=2, sequence=4, offset=2)

    ret = io.StringIO("")
    yaml.dump(config, ret)
    return ret.getvalue()
Пример #2
0
import io
import re

import docker
from ruamel.yaml import YAML
from ruamel.yaml.comments import CommentedMap
from toolz import get

y = YAML(typ='rt')
y.default_flow_style = False
y.sort_base_mapping_type_on_output = False
y.indent(offset=2)


def render(container_names, version=3):
    struct = {}
    networks = []

    for cname in container_names:
        cfile, networks = _generate(cname)
        struct.update(cfile)

    with io.StringIO() as buffer:
        if version == 1:
            y.dump(CommentedMap(struct), buffer)
        elif version == 3:
            d = CommentedMap({'version': '3', 'services': struct})

            if networks:
                d.update({'networks': networks})