mirror of https://github.com/apache/cloudstack.git
api/server: apply suggestions
This commit is contained in:
parent
9674f7628d
commit
5a3fdc0485
|
|
@ -4500,7 +4500,11 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
if (provider == null) {
|
||||
provider = _networkModel.getDefaultUniqueProviderForService(service).getName();
|
||||
} else {
|
||||
provider = _networkModel.resolveProvider(provider).getName();
|
||||
final Provider resolvedProvider = _networkModel.resolveProvider(provider);
|
||||
if (resolvedProvider == null) {
|
||||
throw new InvalidParameterValueException("Invalid provider " + provider + " configured for service " + service);
|
||||
}
|
||||
provider = resolvedProvider.getName();
|
||||
}
|
||||
|
||||
// check that provider is supported
|
||||
|
|
@ -4526,7 +4530,10 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
|
|||
final List<String> providerNames = _ntwkSrvcDao.getDistinctProviders(networkId);
|
||||
final List<Provider> providers = new ArrayList<>();
|
||||
for (final String providerName : providerNames) {
|
||||
providers.add(_networkModel.resolveProvider(providerName));
|
||||
final Provider provider = _networkModel.resolveProvider(providerName);
|
||||
if (provider != null) {
|
||||
providers.add(provider);
|
||||
}
|
||||
}
|
||||
|
||||
return providers;
|
||||
|
|
|
|||
|
|
@ -196,7 +196,7 @@ import java.util.stream.Collectors;
|
|||
* <pre>{"host":"192.168.1.10","namespace":"cs-net-42"}</pre>
|
||||
*
|
||||
* <h3>Network capabilities</h3>
|
||||
* When creating the extension, set detail {@code network.capabilities} to a
|
||||
* When creating the extension, set detail {@code network.service.capabilities} to a
|
||||
* JSON object describing the services and their capabilities:
|
||||
* <pre>
|
||||
* {
|
||||
|
|
@ -333,7 +333,7 @@ public class NetworkExtensionElement extends AdapterBase implements
|
|||
public Map<Service, Map<Capability, String>> getCapabilities() {
|
||||
try {
|
||||
// If this element is scoped to a provider name, prefer capabilities stored
|
||||
// in the extension's "network.capabilities" detail. The ExtensionHelper
|
||||
// in the extension's "network.service.capabilities" detail. The ExtensionHelper
|
||||
// exposes a helper that loads the Service→Capability map from the DB.
|
||||
if (providerName != null && !providerName.isBlank()) {
|
||||
Map<Service, Map<Capability, String>> caps = extensionHelper.getNetworkCapabilitiesForProvider(null, providerName);
|
||||
|
|
@ -342,7 +342,7 @@ public class NetworkExtensionElement extends AdapterBase implements
|
|||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.warn("Failed to load network capabilities from extension details for provider '{}': {}", providerName, e.getMessage());
|
||||
logger.warn("Failed to load network service capabilities from extension details for provider '{}': {}", providerName, e.getMessage());
|
||||
}
|
||||
|
||||
return DEFAULT_CAPABILITIES;
|
||||
|
|
|
|||
|
|
@ -3310,8 +3310,10 @@ public class ApiResponseHelper implements ResponseGenerator, ResourceIdSupport {
|
|||
response.setServices(services);
|
||||
|
||||
Provider serviceProvider = networkModel.resolveProvider(result.getProviderName());
|
||||
boolean canEnableIndividualServices = ApiDBUtils.canElementEnableIndividualServices(serviceProvider);
|
||||
response.setCanEnableIndividualServices(canEnableIndividualServices);
|
||||
if (serviceProvider != null) {
|
||||
boolean canEnableIndividualServices = ApiDBUtils.canElementEnableIndividualServices(serviceProvider);
|
||||
response.setCanEnableIndividualServices(canEnableIndividualServices);
|
||||
}
|
||||
|
||||
response.setObjectName("networkserviceprovider");
|
||||
return response;
|
||||
|
|
|
|||
|
|
@ -1266,7 +1266,11 @@ public class NetworkModelImpl extends ManagerBase implements NetworkModel, Confi
|
|||
if (providers == null) {
|
||||
providers = new HashSet<Provider>();
|
||||
}
|
||||
providers.add(resolveProvider(instance.getProvider()));
|
||||
|
||||
final Provider provider = resolveProvider(instance.getProvider());
|
||||
if (provider != null) {
|
||||
providers.add(provider);
|
||||
}
|
||||
serviceProviderMap.put(Service.getService(service), providers);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -723,7 +723,9 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
|
|||
String fwProviderName = networkServiceMapDao.getProviderForServiceInNetwork(network.getId(), Service.Firewall);
|
||||
if (fwProviderName != null) {
|
||||
NetworkElement element = _networkModel.getElementImplementingProvider(fwProviderName);
|
||||
handled = ((FirewallServiceProvider) element).applyFWRules(network, rules);
|
||||
if (element instanceof FirewallServiceProvider) {
|
||||
handled = ((FirewallServiceProvider) element).applyFWRules(network, rules);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -743,7 +745,9 @@ public class FirewallManagerImpl extends ManagerBase implements FirewallService,
|
|||
String pfProviderName = networkServiceMapDao.getProviderForServiceInNetwork(network.getId(), Service.PortForwarding);
|
||||
if (pfProviderName != null) {
|
||||
NetworkElement element = _networkModel.getElementImplementingProvider(pfProviderName);
|
||||
handled = ((PortForwardingServiceProvider) element).applyPFRules(network, (List<PortForwardingRule>) rules);
|
||||
if (element instanceof PortForwardingServiceProvider) {
|
||||
handled = ((PortForwardingServiceProvider) element).applyPFRules(network, (List<PortForwardingRule>) rules);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -2055,7 +2055,9 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements
|
|||
String lbProviderName = _ntwkSrvcDao.getProviderForServiceInNetwork(network.getId(), Service.Lb);
|
||||
if (lbProviderName != null) {
|
||||
NetworkElement element = _networkModel.getElementImplementingProvider(lbProviderName);
|
||||
handled = ((LoadBalancingServiceProvider) element).applyLBRules(network, rules);
|
||||
if (element instanceof LoadBalancingServiceProvider) {
|
||||
handled = ((LoadBalancingServiceProvider) element).applyLBRules(network, rules);
|
||||
}
|
||||
}
|
||||
}
|
||||
return handled;
|
||||
|
|
|
|||
|
|
@ -455,7 +455,10 @@ public class NetworkACLManagerImpl extends ManagerBase implements NetworkACLMana
|
|||
if (aclProviderName != null) {
|
||||
foundProvider = true;
|
||||
NetworkElement element = _networkModel.getElementImplementingProvider(aclProviderName);
|
||||
handled = ((NetworkACLServiceProvider) element).applyNetworkACLs(network, rules);
|
||||
if (element instanceof NetworkACLServiceProvider) {
|
||||
logger.debug("Applying NetworkACL for network: {} with Network ACL service provider: {}", network, aclProviderName);
|
||||
handled = ((NetworkACLServiceProvider) element).applyNetworkACLs(network, rules);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (handled) {
|
||||
|
|
|
|||
|
|
@ -1857,7 +1857,11 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis
|
|||
// Default to VPCVirtualRouter
|
||||
provider = Provider.VPCVirtualRouter.getName();
|
||||
} else {
|
||||
provider = _ntwkModel.resolveProvider(provider).getName();
|
||||
final Provider resolvedProvider = _ntwkModel.resolveProvider(provider);
|
||||
if (resolvedProvider == null) {
|
||||
throw new InvalidParameterValueException("Invalid provider " + provider + " configured for service " + service);
|
||||
}
|
||||
provider = resolvedProvider.getName();
|
||||
}
|
||||
|
||||
if (!_ntwkModel.isProviderEnabledInZone(zoneId, provider)) {
|
||||
|
|
|
|||
|
|
@ -4256,6 +4256,6 @@
|
|||
"label.external.network.service": "External Network Service",
|
||||
"message.confirm.disable.external.network.provider": "Are you sure you want to disable the External Network provider?",
|
||||
"message.no.network.orchestrator.extensions": "No NetworkOrchestrator extensions found. Please create one first via createExtension API.",
|
||||
"message.extension.services.from.capabilities": "Services are derived automatically from the extension's network.capabilities detail.",
|
||||
"message.extension.services.from.capabilities": "Services are derived automatically from the extension's network.service.capabilities detail.",
|
||||
"message.select.extension": "Please select an extension."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1258,7 +1258,7 @@ export default {
|
|||
|
||||
this.extensionProviderLoading = true
|
||||
try {
|
||||
// registerExtension auto-creates the NSP (Enabled) with services from network.capabilities
|
||||
// registerExtension auto-creates the NSP (Enabled) with services from network.service.capabilities
|
||||
await postAPI('registerExtension', {
|
||||
extensionid: extensionId,
|
||||
resourceid: this.resource.id,
|
||||
|
|
|
|||
|
|
@ -1079,7 +1079,7 @@ export default {
|
|||
...(!this.forVpc && { Firewall: this.Netris })
|
||||
}
|
||||
} else if (this.isExternalNetworkProvider) {
|
||||
// Extension-backed provider: services come from the extension's network.capabilities.
|
||||
// Extension-backed provider: services come from the extension's network.service.capabilities.
|
||||
// this.provider is the extension name (= NSP name)
|
||||
const extProviderObj = {
|
||||
name: this.provider,
|
||||
|
|
@ -1087,7 +1087,7 @@ export default {
|
|||
enabled: true
|
||||
}
|
||||
const svcMap = { Dhcp: this.VR, Dns: this.VR, UserData: this.VR }
|
||||
// Infer services from the selected extension's network.capabilities detail
|
||||
// Infer services from the selected extension's network.service.capabilities detail
|
||||
const extDef = this.availableExtensionProviders.find(e => e.name === this.provider)
|
||||
const services = this._getExtensionServices(extDef)
|
||||
if (services.length > 0) {
|
||||
|
|
@ -1110,9 +1110,9 @@ export default {
|
|||
this.fetchSupportedServiceData()
|
||||
},
|
||||
_getExtensionServices (extDef) {
|
||||
if (!extDef || !extDef.details || !extDef.details['network.capabilities']) return []
|
||||
if (!extDef || !extDef.details || !extDef.details['network.service.capabilities']) return []
|
||||
try {
|
||||
const caps = JSON.parse(extDef.details['network.capabilities'])
|
||||
const caps = JSON.parse(extDef.details['network.service.capabilities'])
|
||||
return (caps && caps.services) ? caps.services : []
|
||||
} catch (e) {
|
||||
return []
|
||||
|
|
|
|||
|
|
@ -686,7 +686,7 @@ export default {
|
|||
return []
|
||||
}
|
||||
|
||||
const capsJson = extDef.details['network.capabilities']
|
||||
const capsJson = extDef.details['network.service.capabilities']
|
||||
if (capsJson) {
|
||||
try {
|
||||
const caps = JSON.parse(capsJson)
|
||||
|
|
|
|||
Loading…
Reference in New Issue