@@ -1850,10 +1850,12 @@ private void orchestrateStop(final String vmUuid, final boolean cleanUpEvenIfUna
18501850
18511851 private void getPersistenceMap (Map <String , Boolean > vlanToPersistenceMap , NetworkVO networkVO ) {
18521852 NetworkOfferingVO offeringVO = networkOfferingDao .findById (networkVO .getNetworkOfferingId ());
1853- Pair <String , Boolean > data = getVMNetworkDetails (networkVO , offeringVO .isPersistent ());
1854- Boolean shouldDeleteNwResource = MapUtils .isNotEmpty (vlanToPersistenceMap ) ? vlanToPersistenceMap .get (data .first ()) : null ;
1855- if (shouldDeleteNwResource == null || shouldDeleteNwResource ){
1856- vlanToPersistenceMap .put (data .first (), data .second ());
1853+ if (offeringVO != null ) {
1854+ Pair <String , Boolean > data = getVMNetworkDetails (networkVO , offeringVO .isPersistent ());
1855+ Boolean shouldDeleteNwResource = (MapUtils .isNotEmpty (vlanToPersistenceMap ) && data != null ) ? vlanToPersistenceMap .get (data .first ()) : null ;
1856+ if (data != null && (shouldDeleteNwResource == null || shouldDeleteNwResource )) {
1857+ vlanToPersistenceMap .put (data .first (), data .second ());
1858+ }
18571859 }
18581860 }
18591861
@@ -1866,7 +1868,7 @@ private Map<String, Boolean> getVlanToPersistenceMapForVM(long vmId) {
18661868 }
18671869 if (userVmJoinVOS .isEmpty ()) {
18681870 VMInstanceVO vmInstanceVO = _vmDao .findById (vmId );
1869- if (vmInstanceVO .getType () == VirtualMachine .Type .DomainRouter ) {
1871+ if (vmInstanceVO != null && vmInstanceVO .getType () == VirtualMachine .Type .DomainRouter ) {
18701872 DomainRouterJoinVO routerVO = domainRouterJoinDao .findById (vmId );
18711873 NetworkVO networkVO = _networkDao .findById (routerVO .getNetworkId ());
18721874 getPersistenceMap (vlanToPersistenceMap , networkVO );
@@ -1886,18 +1888,21 @@ private Map<String, Boolean> getVlanToPersistenceMapForVM(long vmId) {
18861888 */
18871889 private Pair <String , Boolean > getVMNetworkDetails (NetworkVO networkVO , boolean isPersistent ) {
18881890 URI broadcastUri = networkVO .getBroadcastUri ();
1889- String scheme = broadcastUri .getScheme ();
1890- String vlanId = Networks .BroadcastDomainType .getValue (broadcastUri );
1891- boolean shouldDelete = !((networkVO .getGuestType () == Network .GuestType .L2 || networkVO .getGuestType () == Network .GuestType .Isolated ) &&
1892- (scheme .equalsIgnoreCase ("vlan" ))
1893- && isPersistent );
1894- if (shouldDelete ) {
1895- int persistentNetworksCount = _networkDao .getOtherPersistentNetworksCount (networkVO .getId (), networkVO .getBroadcastUri ().toString (), true );
1896- if (persistentNetworksCount > 0 ) {
1897- shouldDelete = false ;
1898- }
1899- }
1900- return new Pair <>(vlanId , shouldDelete );
1891+ if (broadcastUri != null ) {
1892+ String scheme = broadcastUri .getScheme ();
1893+ String vlanId = Networks .BroadcastDomainType .getValue (broadcastUri );
1894+ boolean shouldDelete = !((networkVO .getGuestType () == Network .GuestType .L2 || networkVO .getGuestType () == Network .GuestType .Isolated ) &&
1895+ (scheme != null && scheme .equalsIgnoreCase ("vlan" ))
1896+ && isPersistent );
1897+ if (shouldDelete ) {
1898+ int persistentNetworksCount = _networkDao .getOtherPersistentNetworksCount (networkVO .getId (), networkVO .getBroadcastUri ().toString (), true );
1899+ if (persistentNetworksCount > 0 ) {
1900+ shouldDelete = false ;
1901+ }
1902+ }
1903+ return new Pair <>(vlanId , shouldDelete );
1904+ }
1905+ return null ;
19011906 }
19021907
19031908 private void advanceStop (final VMInstanceVO vm , final boolean cleanUpEvenIfUnableToStop ) throws AgentUnavailableException , OperationTimedoutException ,
0 commit comments