Example of agent section:
    [agent:dns_production]
    application: feat
    agent_type: dns_agent
    descriptor.some_integer: 5
    descriptor.some_string: "hello"
    initiate.suffix: "service.lan"
    initiate.array_of_strings: ["string1", "string2"]

def _parse_agent_section(cfg, parser, section):
    '''
    Example of agent section:
    [agent:dns_production]
    application: feat
    agent_type: dns_agent
    descriptor.some_integer: 5
    descriptor.some_string: "hello"
    initiate.suffix: "service.lan"
    initiate.array_of_strings: ["string1", "string2"]
    '''
    agent_type = cfg.get(section, 'agent_type')
    desc_keywords = dict()
    initiate_keywords = dict()
    for name, value in cfg.items(section):
        if name.startswith('descriptor'):
            key = name.split('.')[1]
            desc_keywords[key] = _unserialize_json_field(
                section, name, value)
        elif name.startswith('initiate'):
            key = name.split('.')[1]
            initiate_keywords[key] = _unserialize_json_field(
                section, name, value)
    name = section.split(':', 2)[1]
    append_agent(parser, agent_type, desc_keywords, initiate_keywords, name)