'Static data model implementation in Worklet
Change-Id: Ic5eeb26eaea547523befd509f9f48281cb4c2031
diff --git a/apps/workflow/ofoverlay/app/src/main/java/org/onosproject/ofoverlay/impl/OfOverlayWorkflow.java b/apps/workflow/ofoverlay/app/src/main/java/org/onosproject/ofoverlay/impl/OfOverlayWorkflow.java
index cbddfc7..2267337 100644
--- a/apps/workflow/ofoverlay/app/src/main/java/org/onosproject/ofoverlay/impl/OfOverlayWorkflow.java
+++ b/apps/workflow/ofoverlay/app/src/main/java/org/onosproject/ofoverlay/impl/OfOverlayWorkflow.java
@@ -21,6 +21,8 @@
import org.onosproject.workflow.api.WorkflowExecutionService;
import org.onosproject.workflow.api.WorkflowStore;
import org.onosproject.workflow.api.WorkplaceStore;
+import org.onosproject.workflow.api.DefaultWorkletDescription;
+import org.onosproject.workflow.api.WorkflowException;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
@@ -57,6 +59,8 @@
private ScheduledExecutorService eventMapTriggerExecutor;
+ private static final String BRIDGE_NAME = "/bridgeName";
+
@Activate
public void activate() {
log.info("Activated");
@@ -77,108 +81,117 @@
* Registers workflows.
*/
private void registerWorkflows() {
- // registering class-loader
- workflowStore.registerLocal(this.getClass().getClassLoader());
+ try {
+ // registering class-loader
+ workflowStore.registerLocal(this.getClass().getClassLoader());
- // registering new workflow definition
- URI uri = URI.create("of-overlay.workflow-nova");
- Workflow workflow = ImmutableListWorkflow.builder()
- .id(uri)
- //.attribute(WorkflowAttribute.REMOVE_AFTER_COMPLETE)
- .chain(Ovs.CreateOvsdbDevice.class.getName())
- .chain(Ovs.UpdateOvsVersion.class.getName())
- .chain(Ovs.UpdateOverlayBridgeId.class.getName())
- .chain(Ovs.CreateOverlayBridge.class.getName())
- .chain(Ovs.UpdateUnderlayBridgeId.class.getName())
- .chain(Ovs.CreateUnderlayBridge.class.getName())
- .chain(Ovs.CreateOverlayBridgeVxlanPort.class.getName())
- .chain(Ovs.AddPhysicalPortsOnUnderlayBridge.class.getName())
- .chain(Ovs.ConfigureUnderlayBridgeLocalIp.class.getName())
- .build();
- workflowStore.register(workflow);
+ // registering new workflow definition
+ URI uri = URI.create("of-overlay.workflow-nova");
+ Workflow workflow = ImmutableListWorkflow.builder()
+ .id(uri)
+ //.attribute(WorkflowAttribute.REMOVE_AFTER_COMPLETE)
+ .chain(Ovs.CreateOvsdbDevice.class.getName())
+ .chain(Ovs.UpdateOvsVersion.class.getName())
+ .chain(Ovs.UpdateOverlayBridgeId.class.getName())
+ .chain(DefaultWorkletDescription.builder().name(Ovs.CreateBridge.class.getName())
+ .staticDataModel(BRIDGE_NAME, "br-int")
+ .build())
+ .chain(Ovs.UpdateUnderlayBridgeId.class.getName())
+ .chain(DefaultWorkletDescription.builder().name(Ovs.CreateBridge.class.getName())
+ .staticDataModel(BRIDGE_NAME, "br-phy")
+ .build())
+ .chain(Ovs.CreateOverlayBridgeVxlanPort.class.getName())
+ .chain(Ovs.AddPhysicalPortsOnUnderlayBridge.class.getName())
+ .chain(Ovs.ConfigureUnderlayBridgeLocalIp.class.getName())
+ .build();
- // registering new workflow definition based on multi-event handling
- uri = URI.create("of-overlay.workflow-nova-multiEvent-test");
- workflow = ImmutableListWorkflow.builder()
- .id(uri)
- //.attribute(WorkflowAttribute.REMOVE_AFTER_COMPLETE)
- .chain(Ovs.CreateOvsdbDevice.class.getName())
- .chain(Ovs.UpdateOvsVersion.class.getName())
- .chain(Ovs.UpdateOverlayBridgeId.class.getName())
- .chain(Ovs.CreateOverlayBridgeMultiEvent.class.getName())
- .chain(Ovs.UpdateUnderlayBridgeId.class.getName())
- .chain(Ovs.CreateUnderlayBridge.class.getName())
- .chain(Ovs.CreateOverlayBridgeVxlanPort.class.getName())
- .chain(Ovs.AddPhysicalPortsOnUnderlayBridge.class.getName())
- .chain(Ovs.ConfigureUnderlayBridgeLocalIp.class.getName())
- .build();
- workflowStore.register(workflow);
+ workflowStore.register(workflow);
- uri = URI.create("of-overlay.clean-workflow-nova");
- workflow = ImmutableListWorkflow.builder()
- .id(uri)
- //.attribute(WorkflowAttribute.REMOVE_AFTER_COMPLETE)
- .chain(Ovs.DeleteOverlayBridgeConfig.class.getName())
- .chain(Ovs.RemoveOverlayBridgeOfDevice.class.getName())
- .chain(Ovs.DeleteUnderlayBridgeConfig.class.getName())
- .chain(Ovs.RemoveUnderlayBridgeOfDevice.class.getName())
- .chain(Ovs.RemoveOvsdbDevice.class.getName())
- .build();
- workflowStore.register(workflow);
+ // registering new workflow definition based on multi-event handling
+ uri = URI.create("of-overlay.workflow-nova-multiEvent-test");
+ workflow = ImmutableListWorkflow.builder()
+ .id(uri)
+ //.attribute(WorkflowAttribute.REMOVE_AFTER_COMPLETE)
+ .chain(Ovs.CreateOvsdbDevice.class.getName())
+ .chain(Ovs.UpdateOvsVersion.class.getName())
+ .chain(Ovs.UpdateOverlayBridgeId.class.getName())
+ .chain(Ovs.CreateOverlayBridgeMultiEvent.class.getName())
+ .chain(Ovs.UpdateUnderlayBridgeId.class.getName())
+ .chain(Ovs.CreateUnderlayBridge.class.getName())
+ .chain(Ovs.CreateOverlayBridgeVxlanPort.class.getName())
+ .chain(Ovs.AddPhysicalPortsOnUnderlayBridge.class.getName())
+ .chain(Ovs.ConfigureUnderlayBridgeLocalIp.class.getName())
+ .build();
+ workflowStore.register(workflow);
- uri = URI.create("of-overlay.clean-workflow-nova-waitAll-Bridge-Del");
- workflow = ImmutableListWorkflow.builder()
- .id(uri)
- //.attribute(WorkflowAttribute.REMOVE_AFTER_COMPLETE)
- .chain(Ovs.DeleteOverlayBridgeConfig.class.getName())
- .chain(Ovs.DeleteUnderlayBridgeConfig.class.getName())
- .chain(Ovs.RemoveBridgeOfDevice.class.getName())
- .chain(Ovs.RemoveOvsdbDevice.class.getName())
- .build();
- workflowStore.register(workflow);
+ uri = URI.create("of-overlay.clean-workflow-nova");
+ workflow = ImmutableListWorkflow.builder()
+ .id(uri)
+ //.attribute(WorkflowAttribute.REMOVE_AFTER_COMPLETE)
+ .chain(Ovs.DeleteOverlayBridgeConfig.class.getName())
+ .chain(Ovs.RemoveOverlayBridgeOfDevice.class.getName())
+ .chain(Ovs.DeleteUnderlayBridgeConfig.class.getName())
+ .chain(Ovs.RemoveUnderlayBridgeOfDevice.class.getName())
+ .chain(Ovs.RemoveOvsdbDevice.class.getName())
+ .build();
+ workflowStore.register(workflow);
- uri = URI.create("of-overlay.workflow-ovs-leaf");
- workflow = ImmutableListWorkflow.builder()
- .id(uri)
- .chain(Ovs.CreateOvsdbDevice.class.getName())
- .chain(Ovs.UpdateOvsVersion.class.getName())
- .chain(Ovs.UpdateUnderlayBridgeId.class.getName())
- .chain(Ovs.CreateUnderlayBridge.class.getName())
- .chain(Ovs.AddPhysicalPortsOnUnderlayBridge.class.getName())
- .build();
- workflowStore.register(workflow);
+ uri = URI.create("of-overlay.clean-workflow-nova-waitAll-Bridge-Del");
+ workflow = ImmutableListWorkflow.builder()
+ .id(uri)
+ //.attribute(WorkflowAttribute.REMOVE_AFTER_COMPLETE)
+ .chain(Ovs.DeleteOverlayBridgeConfig.class.getName())
+ .chain(Ovs.DeleteUnderlayBridgeConfig.class.getName())
+ .chain(Ovs.RemoveBridgeOfDevice.class.getName())
+ .chain(Ovs.RemoveOvsdbDevice.class.getName())
+ .build();
+ workflowStore.register(workflow);
- uri = URI.create("of-overlay.workflow-ovs-spine");
- workflow = ImmutableListWorkflow.builder()
- .id(uri)
- .chain(Ovs.CreateOvsdbDevice.class.getName())
- .chain(Ovs.UpdateOvsVersion.class.getName())
- .chain(Ovs.UpdateUnderlayBridgeId.class.getName())
- .chain(Ovs.CreateUnderlayBridge.class.getName())
- .chain(Ovs.AddPhysicalPortsOnUnderlayBridge.class.getName())
- .build();
- workflowStore.register(workflow);
+ uri = URI.create("of-overlay.workflow-ovs-leaf");
+ workflow = ImmutableListWorkflow.builder()
+ .id(uri)
+ .chain(Ovs.CreateOvsdbDevice.class.getName())
+ .chain(Ovs.UpdateOvsVersion.class.getName())
+ .chain(Ovs.UpdateUnderlayBridgeId.class.getName())
+ .chain(Ovs.CreateUnderlayBridge.class.getName())
+ .chain(Ovs.AddPhysicalPortsOnUnderlayBridge.class.getName())
+ .build();
+ workflowStore.register(workflow);
- deviceService.addListener(
- event -> {
- // trigger EventTask for DeviceEvent
- eventMapTriggerExecutor.submit(
- () -> workflowExecutionService.eventMapTrigger(
- event,
- // event hint supplier
- (ev) -> {
- if (ev == null || ev.subject() == null) {
- return null;
+ uri = URI.create("of-overlay.workflow-ovs-spine");
+ workflow = ImmutableListWorkflow.builder()
+ .id(uri)
+ .chain(Ovs.CreateOvsdbDevice.class.getName())
+ .chain(Ovs.UpdateOvsVersion.class.getName())
+ .chain(Ovs.UpdateUnderlayBridgeId.class.getName())
+ .chain(Ovs.CreateUnderlayBridge.class.getName())
+ .chain(Ovs.AddPhysicalPortsOnUnderlayBridge.class.getName())
+ .build();
+ workflowStore.register(workflow);
+
+ deviceService.addListener(
+ event -> {
+ // trigger EventTask for DeviceEvent
+ eventMapTriggerExecutor.submit(
+ () -> workflowExecutionService.eventMapTrigger(
+ event,
+ // event hint supplier
+ (ev) -> {
+ if (ev == null || ev.subject() == null) {
+ return null;
+ }
+ String hint = event.subject().id().toString();
+ log.debug("hint: {}", hint);
+ return hint;
}
- String hint = event.subject().id().toString();
- log.debug("hint: {}", hint);
- return hint;
- }
- )
- );
- }
- );
+ )
+ );
+ }
+ );
+ } catch (WorkflowException e) {
+ e.printStackTrace();
+ }
}
}