question: 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 ) ; } }
target:  This method executes process to update varrays for the passed port parameter.