introduces basic sxp infrastructure 69/37969/3
authorMichal Rehak <mirehak@cisco.com>
Thu, 10 Mar 2016 13:27:07 +0000 (14:27 +0100)
committerMichal Rehak <mirehak@cisco.com>
Mon, 25 Apr 2016 15:02:36 +0000 (17:02 +0200)
    - listeners
    - sxp-mapper reactor
    - L3EPDao
    - copyright headers

Change-Id: Ifd1ff1e70669bc3107c9697e3815591ca4d0281f
Signed-off-by: Michal Rehak <mirehak@cisco.com>
sxp-mapper/src/main/java/org/opendaylight/controller/config/yang/config/groupbasedpolicy/sxp_mapper/SxpMapperProviderModule.java
sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/SxpMapperProviderImpl.java [deleted file]
sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/api/EPTemplateListener.java [new file with mode: 0644]
sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/api/L3EndpointDao.java [new file with mode: 0644]
sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/api/SxpMapperReactor.java [new file with mode: 0644]
sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/EPForwardingTemplateListenerImpl.java [new file with mode: 0644]
sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/EPPolicyTemplateListenerImpl.java [new file with mode: 0644]
sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/L3EndpointDaoImpl.java [new file with mode: 0644]
sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/SxpDatabaseListenerImpl.java [new file with mode: 0644]
sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/SxpMapperProviderImpl.java [new file with mode: 0644]
sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/SxpMapperReactorImpl.java [new file with mode: 0644]

index 8f65147dbbfbcb4a0b0bfbb1f4f8d7868af41630..8a78441ec48b4ae9480c6db3ac622bafb052994b 100644 (file)
@@ -9,7 +9,7 @@
 package org.opendaylight.controller.config.yang.config.groupbasedpolicy.sxp_mapper;
 
 
-import org.opendaylight.groupbasedpolicy.sxp.mapper.SxpMapperProviderImpl;
+import org.opendaylight.groupbasedpolicy.sxp.mapper.impl.SxpMapperProviderImpl;
 
 /**
 * sxp-mapper impl module
diff --git a/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/SxpMapperProviderImpl.java b/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/SxpMapperProviderImpl.java
deleted file mode 100644 (file)
index d21c3d2..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.groupbasedpolicy.sxp.mapper;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
-
-/**
- * SxpMapper provider implementation.
- */
-public class SxpMapperProviderImpl implements AutoCloseable {
-
-    private final DataBroker dataBrokerDependency;
-    private final RpcProviderRegistry rpcRegistryDependency;
-
-    public SxpMapperProviderImpl(final DataBroker dataBrokerDependency, final RpcProviderRegistry rpcRegistryDependency) {
-        this.dataBrokerDependency = dataBrokerDependency;
-        this.rpcRegistryDependency = rpcRegistryDependency;
-    }
-
-    @Override
-    public void close() throws Exception {
-        //TODO: stub
-    }
-}
diff --git a/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/api/EPTemplateListener.java b/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/api/EPTemplateListener.java
new file mode 100644 (file)
index 0000000..f11007a
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.sxp.mapper.api;
+
+import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
+
+/**
+ * Purpose: provide listener capability to EB templates
+ */
+public interface EPTemplateListener extends DataChangeListener, AutoCloseable {
+    //NOBODY
+}
diff --git a/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/api/L3EndpointDao.java b/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/api/L3EndpointDao.java
new file mode 100644 (file)
index 0000000..1547589
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.sxp.mapper.api;
+
+/**
+ * Purpose: provides storing of L3 endpoints
+ */
+public interface L3EndpointDao {
+}
diff --git a/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/api/SxpMapperReactor.java b/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/api/SxpMapperReactor.java
new file mode 100644 (file)
index 0000000..3e9f865
--- /dev/null
@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.sxp.mapper.api;
+
+/**
+ * Purpose: TODO!
+ */
+public interface SxpMapperReactor {
+}
diff --git a/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/EPForwardingTemplateListenerImpl.java b/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/EPForwardingTemplateListenerImpl.java
new file mode 100644 (file)
index 0000000..abab5da
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.sxp.mapper.impl;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
+import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
+import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.groupbasedpolicy.sxp.mapper.api.EPTemplateListener;
+import org.opendaylight.groupbasedpolicy.sxp.mapper.api.SxpMapperReactor;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Purpose: listens to EP forwarding template and propagates change events for further processing
+ */
+public class EPForwardingTemplateListenerImpl implements EPTemplateListener {
+
+    private static final Logger LOG = LoggerFactory.getLogger(EPForwardingTemplateListenerImpl.class);
+    private final SxpMapperReactor sxpMapperReactor;
+    private final ListenerRegistration<DataChangeListener> listenerRegistration;
+    private final InstanceIdentifier<?> templatePath;
+
+    public EPForwardingTemplateListenerImpl(final DataBroker dataBroker, final SxpMapperReactor sxpMapperReactor) {
+        this.sxpMapperReactor = sxpMapperReactor;
+
+        // TODO: get template path
+        templatePath = null;
+        listenerRegistration = dataBroker.registerDataChangeListener(LogicalDatastoreType.CONFIGURATION, templatePath,
+                this, AsyncDataBroker.DataChangeScope.BASE);
+        LOG.debug("started listening to {}", templatePath);
+    }
+
+    @Override
+    public void onDataChanged(final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> asyncDataChangeEvent) {
+        // sxpMapperReactor.process(template)
+    }
+
+    @Override
+    public void close() throws Exception {
+        LOG.debug("closing listener registration to {}", templatePath);
+        listenerRegistration.close();
+    }
+}
diff --git a/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/EPPolicyTemplateListenerImpl.java b/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/EPPolicyTemplateListenerImpl.java
new file mode 100644 (file)
index 0000000..0b1c4e8
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.sxp.mapper.impl;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
+import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
+import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.groupbasedpolicy.sxp.mapper.api.EPTemplateListener;
+import org.opendaylight.groupbasedpolicy.sxp.mapper.api.SxpMapperReactor;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Purpose: listens to EP policy template and propagates change events for further processing
+ */
+public class EPPolicyTemplateListenerImpl implements EPTemplateListener {
+
+    private static final Logger LOG = LoggerFactory.getLogger(EPPolicyTemplateListenerImpl.class);
+    private final ListenerRegistration<DataChangeListener> listenerRegistration;
+    private final InstanceIdentifier<?> templatePath;
+
+    public EPPolicyTemplateListenerImpl(final DataBroker dataBroker, final SxpMapperReactor sxpMapperReactor) {
+        // TODO: get template path
+        templatePath = null;
+        listenerRegistration = dataBroker.registerDataChangeListener(LogicalDatastoreType.CONFIGURATION, templatePath,
+                this, AsyncDataBroker.DataChangeScope.BASE);
+        LOG.debug("started listening to {}", templatePath);
+    }
+
+    @Override
+    public void onDataChanged(final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> asyncDataChangeEvent) {
+        // sxpMapperReactor.process(template)
+    }
+
+    @Override
+    public void close() throws Exception {
+        LOG.debug("closing listener registration to {}", templatePath);
+        listenerRegistration.close();
+    }
+}
diff --git a/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/L3EndpointDaoImpl.java b/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/L3EndpointDaoImpl.java
new file mode 100644 (file)
index 0000000..e0bbc91
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.sxp.mapper.impl;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.groupbasedpolicy.sxp.mapper.api.L3EndpointDao;
+
+/**
+ * Purpose: stores L3 endpoints to DS
+ */
+public class L3EndpointDaoImpl implements L3EndpointDao {
+    private final DataBroker dataBroker;
+
+    public L3EndpointDaoImpl(final DataBroker dataBroker) {
+        this.dataBroker = dataBroker;
+    }
+}
diff --git a/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/SxpDatabaseListenerImpl.java b/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/SxpDatabaseListenerImpl.java
new file mode 100644 (file)
index 0000000..c8d163d
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.sxp.mapper.impl;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;
+import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker;
+import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.groupbasedpolicy.sxp.mapper.api.SxpMapperReactor;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * listens to sxp master database and propagates change events for further processing
+ */
+public class SxpDatabaseListenerImpl implements DataChangeListener, AutoCloseable {
+
+    private static final Logger LOG = LoggerFactory.getLogger(SxpDatabaseListenerImpl.class);
+    private final SxpMapperReactor sxpMapperReactor;
+
+    private final ListenerRegistration<DataChangeListener> listenerRegistration;
+    private final InstanceIdentifier<?> sxpDbPath;
+
+    public SxpDatabaseListenerImpl(final DataBroker dataBroker, final SxpMapperReactor sxpMapperReactor) {
+        this.sxpMapperReactor = sxpMapperReactor;
+
+        // TODO: get db path
+        sxpDbPath = null;
+        listenerRegistration = dataBroker.registerDataChangeListener(LogicalDatastoreType.OPERATIONAL, sxpDbPath,
+                this, AsyncDataBroker.DataChangeScope.BASE);
+        LOG.debug("started listening to {}", sxpDbPath);
+    }
+
+    @Override
+    public void onDataChanged(final AsyncDataChangeEvent<InstanceIdentifier<?>, DataObject> asyncDataChangeEvent) {
+        // sxpMapperReactor.process(template)
+    }
+
+    @Override
+    public void close() throws Exception {
+        LOG.debug("closing listener registration to {}", sxpDbPath);
+        listenerRegistration.close();
+    }
+}
diff --git a/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/SxpMapperProviderImpl.java b/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/SxpMapperProviderImpl.java
new file mode 100644 (file)
index 0000000..ff0844c
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.sxp.mapper.impl;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
+import org.opendaylight.groupbasedpolicy.sxp.mapper.api.EPTemplateListener;
+import org.opendaylight.groupbasedpolicy.sxp.mapper.api.L3EndpointDao;
+import org.opendaylight.groupbasedpolicy.sxp.mapper.api.SxpMapperReactor;
+
+/**
+ * SxpMapper provider implementation.
+ */
+public class SxpMapperProviderImpl implements AutoCloseable {
+
+    private final DataBroker dataBrokerDependency;
+    private final RpcProviderRegistry rpcRegistryDependency;
+    private final SxpDatabaseListenerImpl sxpDatabaseListener;
+    private final SxpMapperReactor sxpMapperReactor;
+    private final EPTemplateListener epPolicyTemplateListener;
+    private final EPTemplateListener epForwardingTemplateListener;
+
+    public SxpMapperProviderImpl(final DataBroker dataBroker, final RpcProviderRegistry rpcRegistryDependency) {
+        this.dataBrokerDependency = dataBroker;
+        this.rpcRegistryDependency = rpcRegistryDependency;
+
+        final L3EndpointDao l3EndpointDao = new L3EndpointDaoImpl(dataBroker);
+        sxpMapperReactor = new SxpMapperReactorImpl(l3EndpointDao);
+        sxpDatabaseListener = new SxpDatabaseListenerImpl(dataBroker, sxpMapperReactor);
+        epPolicyTemplateListener = new EPPolicyTemplateListenerImpl(dataBroker, sxpMapperReactor);
+        epForwardingTemplateListener = new EPForwardingTemplateListenerImpl(dataBroker, sxpMapperReactor);
+
+    }
+
+    // register listeners to ip/sgt and EP-templates (by SGT, by subnet) -> 3x
+    // exclusively write L3-EP to DS upon DataChangeEvent
+
+    @Override
+    public void close() throws Exception {
+        //TODO: stub
+        sxpDatabaseListener.close();
+        epPolicyTemplateListener.close();
+        epForwardingTemplateListener.close();
+    }
+}
diff --git a/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/SxpMapperReactorImpl.java b/sxp-mapper/src/main/java/org/opendaylight/groupbasedpolicy/sxp/mapper/impl/SxpMapperReactorImpl.java
new file mode 100644 (file)
index 0000000..8124bf5
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.groupbasedpolicy.sxp.mapper.impl;
+
+import org.opendaylight.groupbasedpolicy.sxp.mapper.api.L3EndpointDao;
+import org.opendaylight.groupbasedpolicy.sxp.mapper.api.SxpMapperReactor;
+
+/**
+ * Purpose: exclusively processes sxp master database changes and EGP templates changes
+ */
+public class SxpMapperReactorImpl implements SxpMapperReactor {
+    private final L3EndpointDao l3EndpointDao;
+
+    public SxpMapperReactorImpl(final L3EndpointDao l3EndpointDao) {
+        this.l3EndpointDao = l3EndpointDao;
+    }
+}