</notification-adapter>
<ep-renderer-augmentation-registry>
- <type xmlns:epr="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">epr:ep-renderer-augmentation-registry</type>
+ <type xmlns:gbp="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">gbp:ep-renderer-augmentation-registry</type>
<name>ep-renderer-augmentation-registry</name>
</ep-renderer-augmentation-registry>
+ <policy-validator-registry>
+ <type xmlns:gbp="urn:opendaylight:params:xml:ns:yang:controller:config:groupbasedpolicy">gbp:policy-validator-registry</type>
+ <name>policy-validator-registry</name>
+ </policy-validator-registry>
+
<gbp-ofoverlay-table-offset>0</gbp-ofoverlay-table-offset>
</module>
</modules>
getRpcRegistryDependency(),
getNotificationAdapterDependency(),
getEpRendererAugmentationRegistryDependency(),
+ getPolicyValidatorRegistryDependency(),
getGbpOfoverlayTableOffset().shortValue());
}
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentationRegistry;
+import org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry;
import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint.EndpointManager;
import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint.OfOverlayAug;
import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.endpoint.OfOverlayL3NatAug;
import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.node.SwitchManager;
+import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.Action;
import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.ActionDefinitionListener;
import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.ClassifierDefinitionListener;
+import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.SubjectFeatures;
import org.opendaylight.groupbasedpolicy.util.DataStoreHelper;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionDefinitionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayConfig;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayConfigBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.RendererName;
RpcProviderRegistry rpcRegistry,
NotificationService notificationService,
EpRendererAugmentationRegistry epRendererAugmentationRegistry,
+ PolicyValidatorRegistry policyValidatorRegistry,
final short tableOffset) {
super();
this.dataBroker = dataProvider;
classifierDefinitionListener = new ClassifierDefinitionListener(dataBroker);
actionDefinitionListener = new ActionDefinitionListener(dataProvider);
- // TODO we need register action/classifier validators to gpb-base
+ for (Entry<ActionDefinitionId, Action> entry : SubjectFeatures.getActions().entrySet()) {
+ policyValidatorRegistry.register(entry.getKey(), entry.getValue());
+ }
policyManager = new PolicyManager(dataProvider,
switchManager,
}
}
}
+ // PolicyProviderRegistry service
+ container policy-validator-registry {
+ uses config:service-ref {
+ refine type {
+ mandatory true;
+ config:required-identity gbpcfg:policy-validator-registry;
+ }
+ }
+ }
uses ofoverlay:initial-values;
}
import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.groupbasedpolicy.api.PolicyValidatorRegistry;
import org.opendaylight.groupbasedpolicy.endpoint.EndpointRpcRegistry;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayConfig;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
private RpcProviderRegistry rpcRegistry;
private EndpointRpcRegistry endpointRpcRegistry;
private NotificationService notificationService;
+ private PolicyValidatorRegistry policyValidatorRegistry;
private short tableOffset;
private CheckedFuture<Optional<OfOverlayConfig>, ReadFailedException> future;
private ListenerRegistration<DataChangeListener> configReg;
public void initialisation() {
dataProvider = mock(DataBroker.class);
rpcRegistry = mock(RpcProviderRegistry.class);
- notificationService = mock(NotificationService.class);
endpointRpcRegistry = mock(EndpointRpcRegistry.class);
+ notificationService = mock(NotificationService.class);
+ policyValidatorRegistry = mock(PolicyValidatorRegistry.class);
tableOffset = 5;
configReg = mock(ListenerRegistration.class);
when(
when(dataProvider.newReadOnlyTransaction()).thenReturn(readTransaction);
future = Futures.immediateCheckedFuture(Optional.<OfOverlayConfig> absent());
when(readTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(future);
- renderer = new OFOverlayRenderer(dataProvider, rpcRegistry, notificationService, endpointRpcRegistry, tableOffset);
+ renderer = new OFOverlayRenderer(dataProvider, rpcRegistry, notificationService, endpointRpcRegistry,
+ policyValidatorRegistry, tableOffset);
}
@Test