public boolean zoneExportAddVolumes(URI exportGroupURI,List<URI> exportMaskURIs,Collection<URI> volumeURIs,String token){
  ExportGroup exportGroup=_dbClient.queryObject(ExportGroup.class,exportGroupURI);
  _log.info(String.format("Entering zoneExportAddVolumes for ExportGroup: %s (%s) Volumes: %s",exportGroup.getLabel(),exportGroup.getId(),volumeURIs.toString()));
  String addZoneWhileAddingVolume=customConfigHandler.getComputedCustomConfigValue(CustomConfigConstants.ZONE_ADD_VOLUME,CustomConfigConstants.GLOBAL_KEY,null);
  Boolean addZoneOnDeviceOperation=true;
  _log.info("zoneExportAddVolumes checking for custom config value {} to skip zoning checks : (Default) : {}",addZoneWhileAddingVolume,addZoneOnDeviceOperation);
  if (addZoneWhileAddingVolume != null) {
    addZoneOnDeviceOperation=Boolean.valueOf(addZoneWhileAddingVolume);
    _log.info("Boolean convereted of : {} : returned by Config handler as : {} ",addZoneWhileAddingVolume,addZoneOnDeviceOperation);
  }
 else {
    _log.info("Config handler returned null for value so going by default value {}",addZoneOnDeviceOperation);
  }
  _log.info("zoneExportAddVolumes checking for custom config value {} to skip zoning checks : (Custom Config) : {}",addZoneWhileAddingVolume,addZoneOnDeviceOperation);
  return doZoneExportMasksCreate(exportGroup,exportMaskURIs,volumeURIs,token,addZoneOnDeviceOperation);
}

public boolean zoneExportAddVolumes ( URI exportGroupURI , List < URI > exportMaskURIs , Collection < URI > volumeURIs , String token ) { ExportGroup exportGroup = _dbClient . queryObject ( ExportGroup . class , exportGroupURI ) ; _log . info ( String . format ( "Entering zoneExportAddVolumes for ExportGroup: %s (%s) Volumes: %s" , exportGroup . getLabel ( ) , exportGroup . getId ( ) , volumeURIs . toString ( ) ) ) ; String addZoneWhileAddingVolume = customConfigHandler . getComputedCustomConfigValue ( CustomConfigConstants . ZONE_ADD_VOLUME , CustomConfigConstants . GLOBAL_KEY , null ) ; Boolean addZoneOnDeviceOperation = true ; _log . info ( "zoneExportAddVolumes checking for custom config value {} to skip zoning checks : (Default) : {}" , addZoneWhileAddingVolume , addZoneOnDeviceOperation ) ; if ( addZoneWhileAddingVolume != null ) { addZoneOnDeviceOperation = Boolean . valueOf ( addZoneWhileAddingVolume ) ; _log . info ( "Boolean convereted of : {} : returned by Config handler as : {} " , addZoneWhileAddingVolume , addZoneOnDeviceOperation ) ; } else { _log . info ( "Config handler returned null for value so going by default value {}" , addZoneOnDeviceOperation ) ; } _log . info ( "zoneExportAddVolumes checking for custom config value {} to skip zoning checks : (Custom Config) : {}" , addZoneWhileAddingVolume , addZoneOnDeviceOperation ) ; return doZoneExportMasksCreate ( exportGroup , exportMaskURIs , volumeURIs , token , addZoneOnDeviceOperation ) ; }
called when volumes are added to exportmasks . this is important because we need to add fczonereferences for each of the new volumes so that in the future a zone will not be deleted until all volumes using the zone have been removed . references will only be added for zones with ports belonging to the array containing the volume . note : these arguments ( except token ) must match zoneexportaddvolumesmethod above . this routine executes as a workflow step .
