@@ -472,7 +472,7 @@ protected Extension getExtensionWithCustomActionFromResource(ExtensionCustomActi
472472 // Find extension via the VPC's CustomAction service provider
473473 String providerName = vpcServiceMapDao .getProviderForServiceInVpc (vpc .getId (), Service .CustomAction );
474474 if (providerName != null ) {
475- return extensionDao .findByName (providerName );
475+ return extensionDao .findByNameAndType (providerName , Extension . Type . NetworkOrchestrator );
476476 }
477477 return null ;
478478 }
@@ -1051,16 +1051,8 @@ public Extension updateRegisteredExtensionWithResource(UpdateRegisteredExtension
10511051 resolvedResourceId = clusterVO .getId ();
10521052 }
10531053
1054- List <ExtensionResourceMapVO > mappings = extensionResourceMapDao .listByResourceIdAndType (resolvedResourceId , resType );
1055- ExtensionResourceMapVO targetMapping = null ;
1056- if (CollectionUtils .isNotEmpty (mappings )) {
1057- for (ExtensionResourceMapVO mapping : mappings ) {
1058- if (mapping .getExtensionId () == extensionId ) {
1059- targetMapping = mapping ;
1060- break ;
1061- }
1062- }
1063- }
1054+ ExtensionResourceMapVO targetMapping = extensionResourceMapDao .findResourceByExtensionIdAndResourceIdAndType (
1055+ extensionId , resolvedResourceId , resType );
10641056 if (targetMapping == null ) {
10651057 throw new InvalidParameterValueException (String .format (
10661058 "Extension '%s' is not registered with resource %s (%s)" ,
@@ -1134,16 +1126,12 @@ protected ExtensionResourceMap registerExtensionWithPhysicalNetwork(PhysicalNetw
11341126
11351127 // Block registering the exact same extension twice on the same physical network
11361128 final ExtensionResourceMap .ResourceType resourceType = ExtensionResourceMap .ResourceType .PhysicalNetwork ;
1137- List < ExtensionResourceMapVO > existing = extensionResourceMapDao .listByResourceIdAndType (
1138- physicalNetwork .getId (), resourceType );
1129+ ExtensionResourceMapVO existing = extensionResourceMapDao .findResourceByExtensionIdAndResourceIdAndType (
1130+ extension . getId (), physicalNetwork .getId (), resourceType );
11391131 if (existing != null ) {
1140- for (ExtensionResourceMapVO ex : existing ) {
1141- if (ex .getExtensionId () == extension .getId ()) {
1142- throw new CloudRuntimeException (String .format (
1143- "Extension '%s' is already registered with physical network %s" ,
1144- extension .getName (), physicalNetwork .getId ()));
1145- }
1146- }
1132+ throw new CloudRuntimeException (String .format (
1133+ "Extension '%s' is already registered with physical network %s" ,
1134+ extension .getName (), physicalNetwork ));
11471135 }
11481136
11491137 // Resolve which services this extension provides from its network.services detail
@@ -1179,7 +1167,7 @@ protected ExtensionResourceMap registerExtensionWithPhysicalNetwork(PhysicalNetw
11791167 nsp .setState (PhysicalNetworkServiceProvider .State .Enabled );
11801168 physicalNetworkServiceProviderDao .persist (nsp );
11811169 logger .info ("Auto-created NetworkServiceProvider '{}' (Enabled) for physical network {} "
1182- + "with services {}" , extension . getName () , physicalNetwork . getId () , services );
1170+ + "with services {}" , extension , physicalNetwork , services );
11831171 }
11841172
11851173 return savedExtensionMap ;
@@ -1399,49 +1387,39 @@ public void unregisterExtensionWithCluster(Cluster cluster, Long extensionId) {
13991387
14001388 protected void unregisterExtensionWithPhysicalNetwork (String resourceId , Long extensionId ) {
14011389 PhysicalNetworkVO physicalNetwork = physicalNetworkDao .findByUuid (resourceId );
1402- if (physicalNetwork == null ) {
1403- try {
1404- physicalNetwork = physicalNetworkDao .findById (Long .parseLong (resourceId ));
1405- } catch (NumberFormatException ignored ) {
1406- }
1407- }
14081390 if (physicalNetwork == null ) {
14091391 throw new InvalidParameterValueException ("Invalid physical network ID specified" );
14101392 }
14111393 // Find the specific map entry for this extension+physical-network combination
1412- List < ExtensionResourceMapVO > existingList = extensionResourceMapDao .listByResourceIdAndType (
1413- physicalNetwork .getId (), ExtensionResourceMap .ResourceType .PhysicalNetwork );
1414- if (existingList == null || existingList . isEmpty () ) {
1394+ ExtensionResourceMapVO existing = extensionResourceMapDao .findResourceByExtensionIdAndResourceIdAndType (
1395+ extensionId , physicalNetwork .getId (), ExtensionResourceMap .ResourceType .PhysicalNetwork );
1396+ if (existing == null ) {
14151397 return ;
14161398 }
1417- final long physNetId = physicalNetwork .getId ();
1418- for (ExtensionResourceMapVO existing : existingList ) {
1419- if (extensionId == null || existing .getExtensionId () == extensionId ) {
1420- ExtensionVO ext = extensionDao .findById (existing .getExtensionId ());
1421- if (ext != null ) {
1422- List <NetworkVO > networksUsingProvider = networkDao .listByPhysicalNetworkAndProvider (
1423- physNetId , ext .getName ());
1424- if (CollectionUtils .isNotEmpty (networksUsingProvider )) {
1425- throw new CloudRuntimeException (String .format (
1426- "Cannot unregister extension '%s' from physical network %s. "
1427- + "Provider is used by %d existing network service(s)" ,
1428- ext .getName (), physNetId , networksUsingProvider .size ()));
1429- }
1430- }
14311399
1432- extensionResourceMapDao .remove (existing .getId ());
1433- extensionResourceMapDetailsDao .removeDetails (existing .getId ());
1400+ ExtensionVO ext = extensionDao .findById (existing .getExtensionId ());
1401+ if (ext != null ) {
1402+ List <NetworkVO > networksUsingProvider = networkDao .listByPhysicalNetworkAndProvider (
1403+ physicalNetwork .getId (), ext .getName ());
1404+ if (CollectionUtils .isNotEmpty (networksUsingProvider )) {
1405+ throw new CloudRuntimeException (String .format (
1406+ "Cannot unregister extension '%s' from physical network %s. "
1407+ + "Provider is used by %d existing network service(s)" ,
1408+ ext .getName (), physicalNetwork , networksUsingProvider .size ()));
1409+ }
1410+ }
1411+
1412+ extensionResourceMapDao .remove (existing .getId ());
1413+ extensionResourceMapDetailsDao .removeDetails (existing .getId ());
14341414
1435- // Also remove the auto-created NSP for this extension
1436- if (ext != null ) {
1437- PhysicalNetworkServiceProviderVO nsp =
1438- physicalNetworkServiceProviderDao .findByServiceProvider (physNetId , ext .getName ());
1439- if (nsp != null ) {
1440- physicalNetworkServiceProviderDao .remove (nsp .getId ());
1441- logger .info ("Removed NetworkServiceProvider '{}' from physical network {} "
1442- + "on extension unregister" , ext .getName (), physNetId );
1443- }
1444- }
1415+ // Also remove the auto-created NSP for this extension
1416+ if (ext != null ) {
1417+ PhysicalNetworkServiceProviderVO nsp =
1418+ physicalNetworkServiceProviderDao .findByServiceProvider (physicalNetwork .getId (), ext .getName ());
1419+ if (nsp != null ) {
1420+ physicalNetworkServiceProviderDao .remove (nsp .getId ());
1421+ logger .info ("Removed NetworkServiceProvider '{}' from physical network {} "
1422+ + "on extension unregister" , ext , physicalNetwork );
14451423 }
14461424 }
14471425 }
@@ -2027,7 +2005,7 @@ protected CustomActionResultResponse runNetworkCustomAction(Network network,
20272005 // Find the provider name for this network
20282006 String providerName = networkServiceMapDao .getProviderForServiceInNetwork (network .getId (), Service .CustomAction );;
20292007 if (StringUtils .isBlank (providerName )) {
2030- logger .error ("No network service provider found for network {}" , network . getId () );
2008+ logger .error ("No network service provider found for network {}" , network );
20312009 result .put (ApiConstants .DETAILS , "No network service provider found for this network" );
20322010 response .setResult (result );
20332011 return response ;
@@ -2036,7 +2014,7 @@ protected CustomActionResultResponse runNetworkCustomAction(Network network,
20362014 // Check if provider name matches the extension name
20372015 if (!providerName .equals (extensionVO .getName ())) {
20382016 logger .error ("Provider name '{}' for network {} does not match extension name '{}'" ,
2039- providerName , network . getId () , extensionVO . getName () );
2017+ providerName , network , extensionVO );
20402018 result .put (ApiConstants .DETAILS , "Network service provider '" + providerName +
20412019 "' does not match extension '" + extensionVO .getName () + "'" );
20422020 response .setResult (result );
@@ -2046,7 +2024,7 @@ protected CustomActionResultResponse runNetworkCustomAction(Network network,
20462024 // Get the network element implementing that provider
20472025 NetworkElement element = networkModel .getElementImplementingProvider (providerName );
20482026 if (element == null ) {
2049- logger .error ("No NetworkElement found implementing provider '{}' for network {}" , providerName , network . getId () );
2027+ logger .error ("No NetworkElement found implementing provider '{}' for network {}" , providerName , network );
20502028 result .put (ApiConstants .DETAILS , "No network element found for provider: " + providerName );
20512029 response .setResult (result );
20522030 return response ;
@@ -2067,7 +2045,7 @@ protected CustomActionResultResponse runNetworkCustomAction(Network network,
20672045 throw new CloudRuntimeException ("Provider '" + providerName + "' cannot handle custom action for this network" );
20682046 }
20692047 logger .info ("Running network custom action '{}' on network {} via {} (provider: {})" ,
2070- actionName , network . getId () , element .getClass ().getSimpleName (), providerName );
2048+ actionName , network , element .getClass ().getSimpleName (), providerName );
20712049 String output = provider .runCustomAction (network , actionName , parameters );
20722050 boolean success = output != null ;
20732051 response .setSuccess (success );
@@ -2134,7 +2112,7 @@ protected CustomActionResultResponse runVpcCustomAction(Vpc vpc,
21342112 // Get the network element implementing that provider
21352113 NetworkElement element = networkModel .getElementImplementingProvider (providerName );
21362114 if (element == null ) {
2137- logger .error ("No NetworkElement found implementing provider '{}' for VPC {}" , providerName , vpc . getId () );
2115+ logger .error ("No NetworkElement found implementing provider '{}' for VPC {}" , providerName , vpc );
21382116 result .put (ApiConstants .DETAILS , "No network element found for provider: " + providerName );
21392117 response .setResult (result );
21402118 return response ;
@@ -2447,47 +2425,37 @@ public Extension getExtensionForPhysicalNetworkAndProvider(long physicalNetworkI
24472425 if (StringUtils .isBlank (providerName )) {
24482426 return null ;
24492427 }
2450- List <ExtensionResourceMapVO > maps = extensionResourceMapDao .listByResourceIdAndType (
2451- physicalNetworkId , ExtensionResourceMap .ResourceType .PhysicalNetwork );
2452- if (maps == null || maps .isEmpty ()) {
2428+ ExtensionVO ext = extensionDao .findByName (providerName );
2429+ if (ext == null ) {
24532430 return null ;
24542431 }
2455- for ( ExtensionResourceMapVO map : maps ) {
2456- ExtensionVO ext = extensionDao . findById ( map . getExtensionId ());
2457- if ( ext != null && providerName . equalsIgnoreCase ( ext .getName ())) {
2458- return ext ;
2459- }
2432+
2433+ ExtensionResourceMapVO map = extensionResourceMapDao . findResourceByExtensionIdAndResourceIdAndType (
2434+ ext .getId (), physicalNetworkId , ExtensionResourceMap . ResourceType . PhysicalNetwork );
2435+ if ( map != null ) {
2436+ return ext ;
24602437 }
24612438 return null ;
24622439 }
24632440
24642441 @ Override
24652442 public Map <String , String > getAllResourceMapDetailsForExtensionOnPhysicalNetwork (long physicalNetworkId , long extensionId ) {
2466- List < ExtensionResourceMapVO > maps = extensionResourceMapDao .listByResourceIdAndType (
2467- physicalNetworkId , ExtensionResourceMap .ResourceType .PhysicalNetwork );
2468- if (maps == null || maps . isEmpty () ) {
2443+ ExtensionResourceMapVO map = extensionResourceMapDao .findResourceByExtensionIdAndResourceIdAndType (
2444+ extensionId , physicalNetworkId , ExtensionResourceMap .ResourceType .PhysicalNetwork );
2445+ if (map == null ) {
24692446 return new HashMap <>();
24702447 }
2471- for (ExtensionResourceMapVO map : maps ) {
2472- if (map .getExtensionId () == extensionId ) {
2473- Map <String , String > details = extensionResourceMapDetailsDao .listDetailsKeyPairs (map .getId ());
2474- return details != null ? details : new HashMap <>();
2475- }
2476- }
2477- return new HashMap <>();
2448+
2449+ Map <String , String > details = extensionResourceMapDetailsDao .listDetailsKeyPairs (map .getId ());
2450+ return details != null ? details : new HashMap <>();
24782451 }
24792452
24802453 @ Override
24812454 public boolean isNetworkExtensionProvider (String providerName ) {
24822455 if (StringUtils .isBlank (providerName )) {
24832456 return false ;
24842457 }
2485- List <ExtensionVO > networkOrchExtensions = extensionDao .listByType (Extension .Type .NetworkOrchestrator );
2486- if (networkOrchExtensions == null || networkOrchExtensions .isEmpty ()) {
2487- return false ;
2488- }
2489- return networkOrchExtensions .stream ()
2490- .anyMatch (ext -> providerName .equalsIgnoreCase (ext .getName ()));
2458+ return extensionDao .findByNameAndType (providerName , Extension .Type .NetworkOrchestrator ) != null ;
24912459 }
24922460
24932461 @ Override
@@ -2496,7 +2464,7 @@ public List<Extension> listExtensionsByType(Extension.Type type) {
24962464 return new ArrayList <>();
24972465 }
24982466 List <ExtensionVO > extensions = extensionDao .listByType (type );
2499- if (extensions == null || extensions .isEmpty ()) {
2467+ if (CollectionUtils .isEmpty (extensions )) {
25002468 return new ArrayList <>();
25012469 }
25022470 return new ArrayList <>(extensions );
0 commit comments