public static void runUpdatePortAssociationsProcessForVArrayChange(StoragePort port,DbClient dbClient,CoordinatorClient coordinator,List<StoragePool> pools,VirtualArrayAssignmentChanges varrayAssignmentChanges){
  try {
    URI storageSystemURI=port.getStorageDevice();
    Set<String> varraysToAddIds=new HashSet<>();
    Set<String> varraysToRemoveIds=new HashSet<>();
    VirtualArrayAssignments varraysToAdd=varrayAssignmentChanges.getAdd();
    if (varraysToAdd != null) {
      varraysToAddIds=varraysToAdd.getVarrays();
    }
    VirtualArrayAssignments varraysToRemove=varrayAssignmentChanges.getRemove();
    if (varraysToRemove != null) {
      varraysToRemoveIds=varraysToRemove.getVarrays();
    }
    Set<String> varraysWithOutChangedConnectivity=new HashSet<>(varraysToAddIds);
    varraysWithOutChangedConnectivity.addAll(varraysToRemoveIds);
    Set<String> varraysWithChangedConnectivity=StoragePortAssociationHelper.getVArraysWithChangedConnectivityToStorageSystem(port,varraysToAddIds,varraysToRemoveIds,dbClient);
    varraysWithOutChangedConnectivity.removeAll(varraysWithChangedConnectivity);
    Collection<StoragePort> ports=Collections.singleton(port);
    if (null == pools) {
      pools=new ArrayList<StoragePool>();
    }
    Map<NetworkLite,List<StoragePort>> portsByNetwork=groupPortsByNetwork(ports,dbClient);
    if (!portsByNetwork.isEmpty()) {
      updatePortAssociations(ports,portsByNetwork,dbClient);
      Set<URI> poolUris=getStoragePoolIds(pools);
      List<StoragePool> modifiedPools=StoragePoolAssociationHelper.getStoragePoolsFromPorts(dbClient,ports,null);
      for (      StoragePool pool : modifiedPools) {
        if (!poolUris.contains(pool.getId())) {
          pools.add(pool);
        }
      }
    }
    if (!varraysWithChangedConnectivity.isEmpty()) {
      _log.info("Varrays which changed connectivity to storage system {} are {}",storageSystemURI,varraysWithChangedConnectivity);
      List<URI> vpoolURIs=getVpoolsForVarrays(varraysWithChangedConnectivity,dbClient);
      _log.info("There are {} vpools for varrays. Execute all vpool matchers for vpools {}",vpoolURIs.size(),vpoolURIs);
      StringBuffer errorMessage=new StringBuffer();
      ImplicitPoolMatcher.matchModifiedStoragePoolsWithVirtualPools(pools,vpoolURIs,dbClient,coordinator,AttributeMatcher.VPOOL_MATCHERS,errorMessage);
    }
    if (!varraysWithOutChangedConnectivity.isEmpty()) {
      _log.info("Varrays which did not change connection to storage system {} are {}",storageSystemURI,varraysWithOutChangedConnectivity);
      List<URI> vpoolURIs=getVpoolsForVarrays(varraysWithOutChangedConnectivity,dbClient);
      _log.info("There are {} vpools for varrays. Execute num paths matcher for vpools {}",vpoolURIs.size(),vpoolURIs);
      StringBuffer errorMessage=new StringBuffer();
      ImplicitPoolMatcher.matchModifiedStoragePoolsWithVirtualPools(pools,vpoolURIs,dbClient,coordinator,AttributeMatcher.CONNECTIVITY_PLACEMENT_MATCHERS,errorMessage);
    }
    HashSet<URI> systemsToProcess=StoragePoolAssociationHelper.getStorageSytemsFromPorts(ports,null);
    ConnectivityUtil.updateRpSystemsConnectivity(systemsToProcess,dbClient);
  }
 catch (  Exception e) {
    _log.error("Update Port Association process failed",e);
  }
}

public static void runUpdatePortAssociationsProcessForVArrayChange ( StoragePort port , DbClient dbClient , CoordinatorClient coordinator , List < StoragePool > pools , VirtualArrayAssignmentChanges varrayAssignmentChanges ) { try { URI storageSystemURI = port . getStorageDevice ( ) ; Set < String > varraysToAddIds = new HashSet < > ( ) ; Set < String > varraysToRemoveIds = new HashSet < > ( ) ; VirtualArrayAssignments varraysToAdd = varrayAssignmentChanges . getAdd ( ) ; if ( varraysToAdd != null ) { varraysToAddIds = varraysToAdd . getVarrays ( ) ; } VirtualArrayAssignments varraysToRemove = varrayAssignmentChanges . getRemove ( ) ; if ( varraysToRemove != null ) { varraysToRemoveIds = varraysToRemove . getVarrays ( ) ; } Set < String > varraysWithOutChangedConnectivity = new HashSet < > ( varraysToAddIds ) ; varraysWithOutChangedConnectivity . addAll ( varraysToRemoveIds ) ; Set < String > varraysWithChangedConnectivity = StoragePortAssociationHelper . getVArraysWithChangedConnectivityToStorageSystem ( port , varraysToAddIds , varraysToRemoveIds , dbClient ) ; varraysWithOutChangedConnectivity . removeAll ( varraysWithChangedConnectivity ) ; Collection < StoragePort > ports = Collections . singleton ( port ) ; if ( null == pools ) { pools = new ArrayList < StoragePool > ( ) ; } Map < NetworkLite , List < StoragePort > > portsByNetwork = groupPortsByNetwork ( ports , dbClient ) ; if ( ! portsByNetwork . isEmpty ( ) ) { updatePortAssociations ( ports , portsByNetwork , dbClient ) ; Set < URI > poolUris = getStoragePoolIds ( pools ) ; List < StoragePool > modifiedPools = StoragePoolAssociationHelper . getStoragePoolsFromPorts ( dbClient , ports , null ) ; for ( StoragePool pool : modifiedPools ) { if ( ! poolUris . contains ( pool . getId ( ) ) ) { pools . add ( pool ) ; } } } if ( ! varraysWithChangedConnectivity . isEmpty ( ) ) { _log . info ( "Varrays which changed connectivity to storage system {} are {}" , storageSystemURI , varraysWithChangedConnectivity ) ; List < URI > vpoolURIs = getVpoolsForVarrays ( varraysWithChangedConnectivity , dbClient ) ; _log . info ( "There are {} vpools for varrays. Execute all vpool matchers for vpools {}" , vpoolURIs . size ( ) , vpoolURIs ) ; StringBuffer errorMessage = new StringBuffer ( ) ; ImplicitPoolMatcher . matchModifiedStoragePoolsWithVirtualPools ( pools , vpoolURIs , dbClient , coordinator , AttributeMatcher . VPOOL_MATCHERS , errorMessage ) ; } if ( ! varraysWithOutChangedConnectivity . isEmpty ( ) ) { _log . info ( "Varrays which did not change connection to storage system {} are {}" , storageSystemURI , varraysWithOutChangedConnectivity ) ; List < URI > vpoolURIs = getVpoolsForVarrays ( varraysWithOutChangedConnectivity , dbClient ) ; _log . info ( "There are {} vpools for varrays. Execute num paths matcher for vpools {}" , vpoolURIs . size ( ) , vpoolURIs ) ; StringBuffer errorMessage = new StringBuffer ( ) ; ImplicitPoolMatcher . matchModifiedStoragePoolsWithVirtualPools ( pools , vpoolURIs , dbClient , coordinator , AttributeMatcher . CONNECTIVITY_PLACEMENT_MATCHERS , errorMessage ) ; } HashSet < URI > systemsToProcess = StoragePoolAssociationHelper . getStorageSytemsFromPorts ( ports , null ) ; ConnectivityUtil . updateRpSystemsConnectivity ( systemsToProcess , dbClient ) ; } catch ( Exception e ) { _log . error ( "Update Port Association process failed" , e ) ; } }
this method executes process to update varrays for the passed port parameter .
