private void populateExtensions() {
    for (NetworkServiceProviderFactory extp :
        pluginRgty.getExtensionList(NetworkServiceProviderFactory.class)) {
      NetworkServiceProviderFactory old = providerFactories.get(extp.getType().toString());
      if (old != null) {
        throw new CloudRuntimeException(
            String.format(
                "duplicate NetworkServiceProviderFactory[%s, %s] for type[%s]",
                extp.getClass().getName(), old.getClass().getName(), extp.getType()));
      }
      providerFactories.put(extp.getType().toString(), extp);
    }

    for (ApplyNetworkServiceExtensionPoint extp :
        pluginRgty.getExtensionList(ApplyNetworkServiceExtensionPoint.class)) {
      ApplyNetworkServiceExtensionPoint old = providerExts.get(extp.getProviderType().toString());
      if (old != null) {
        throw new CloudRuntimeException(
            String.format(
                "duplicate ApplyNetworkServiceExtensionPoint[%s, %s] for type[%s]",
                extp.getClass().getName(), old.getClass().getName(), extp.getProviderType()));
      }
      providerExts.put(extp.getProviderType().toString(), extp);
    }

    nsExts = pluginRgty.getExtensionList(NetworkServiceExtensionPoint.class);
  }