'Add the zones and cfgs map based on the new zones info.
This method will return the updated zones,cfgs and active_cfg
:param cfgs: Existing cfgs map
:param active_cfg: Existing Active cfg string
:param zones: Existing zones map
:param add_zones_info: Zones map to add
:param active_cfg: Existing active cfg
:param cfg_name: New cfg name
:returns: updated zones, zone configs map, and active_cfg'

def add_zones_cfgs(self, cfgs, zones, add_zones_info, active_cfg, cfg_name):

    cfg_string = ''
    delimiter = ''
    zones_in_active_cfg = ''
    try:
        if active_cfg:
            zones_in_active_cfg = cfgs.get(active_cfg)
        for (zone_name, members) in add_zones_info.items():
            if (zone_name not in zones_in_active_cfg):
                cfg_string += (delimiter + zone_name)
                delimiter = ';'
                zones.update({zone_name: ';'.join(members)})
        if active_cfg:
            if cfg_string:
                cfgs.update({active_cfg: ((cfg_string + ';') + cfgs.get(active_cfg))})
        else:
            active_cfg = cfg_name
            cfgs.update({cfg_name: cfg_string})
    except Exception as e:
        msg = (_('Error    while    updating    the    new    zones    and    cfgs    in    the    zone    string.    Error    %(description)s.') % {'description': six.text_type(e)})
        LOG.error(msg)
        raise exception.BrocadeZoningHttpException(reason=msg)
    return (zones, cfgs, active_cfg)
