add dependency check for qosPolicyId to NeutronNetworkInterface
[neutron.git] / transcriber / src / main / java / org / opendaylight / neutron / transcriber / NeutronNetworkInterface.java
index d1d36a96485bb576d0d0ab3603ff1efb00b3d4fe..85d50fdf72c435b17be8f8c8a36f7274675dc614 100644 (file)
@@ -13,6 +13,8 @@ import java.util.List;
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.ReadTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
 import org.opendaylight.neutron.spi.INeutronNetworkCRUD;
 import org.opendaylight.neutron.spi.NeutronNetwork;
 import org.opendaylight.neutron.spi.NeutronNetworkSegment;
@@ -46,9 +48,12 @@ public final class NeutronNetworkInterface
                     .put(NetworkTypeFlat.class, "flat").put(NetworkTypeGre.class, "gre")
                     .put(NetworkTypeVlan.class, "vlan").put(NetworkTypeVxlan.class, "vxlan").build();
 
+    private final NeutronQosPolicyInterface qosPolicyInterface;
+
     @Inject
-    public NeutronNetworkInterface(DataBroker db) {
+    public NeutronNetworkInterface(DataBroker db, NeutronQosPolicyInterface qosPolicyInterface) {
         super(NetworkBuilder.class, db);
+        this.qosPolicyInterface = qosPolicyInterface;
     }
 
     // IfNBNetworkCRUD methods
@@ -158,4 +163,10 @@ public final class NeutronNetworkInterface
 
         return networkBuilder.build();
     }
+
+    @Override
+    protected boolean areAllDependenciesAvailable(ReadTransaction tx, NeutronNetwork network)
+            throws ReadFailedException {
+        return ifNonNull(network.getQosPolicyId(), qosPolicyId -> qosPolicyInterface.exists(qosPolicyId, tx));
+    }
 }