'Delete zones from fabric.
Method to delete the active zone config zones
:param zone_names: zoneNames separated by semicolon
:param activate: True/False
:param active_zone_set: the active zone set dict retrieved
from get_active_zone_set method'

def delete_zones(self, zone_names, activate, active_zone_set=None):

    active_zoneset_name = None
    zone_list = []
    if (not active_zone_set):
        active_zone_set = self.get_active_zone_set()
    active_zoneset_name = active_zone_set[zone_constant.ACTIVE_ZONE_CONFIG]
    zone_list = active_zone_set[zone_constant.CFG_ZONES]
    zones = self.patrn.split(''.join(zone_names))
    cmd = None
    try:
        if (len(zones) == len(zone_list)):
            self.deactivate_zoneset()
            cmd = ('cfgdelete    "%(active_zoneset_name)s"' % {'active_zoneset_name': active_zoneset_name})
            activate = False
        else:
            cmd = ('cfgremove    "%(active_zoneset_name)s",    "%(zone_names)s"' % {'active_zoneset_name': active_zoneset_name, 'zone_names': zone_names})
        LOG.debug('Delete    zones:    Config    cmd    to    run:    %s', cmd)
        self.apply_zone_change(cmd.split())
        for zone in zones:
            self._zone_delete(zone)
        if activate:
            self.activate_zoneset(active_zoneset_name)
        else:
            self._cfg_save()
    except Exception as e:
        msg = (_('Deleting    zones    failed:    (command=%(cmd)s    error=%(err)s).') % {'cmd': cmd, 'err': six.text_type(e)})
        LOG.error(msg)
        self._cfg_trans_abort()
        raise exception.BrocadeZoningCliException(reason=msg)
