+ private void createOperWaitingJob(final InstanceIdentifier<Node> psNodeiid,
+ final HwvtepPhysicalPortAugmentation inputPhysicalPort,
+ final VlanBindings vlanBinding,
+ final Map inTransitDependencies,
+ final InstanceIdentifier<VlanBindings> vlanIid) {
+
+ DependentJob<VlanBindings> opWaitingJob = new DependentJob.OpWaitingJob(
+ vlanIid, vlanBinding, inTransitDependencies) {
+ @Override
+ public void onDependencyResolved(final HwvtepOperationalState operationalState,
+ final TransactionBuilder transactionBuilder) {
+ PhysicalPortUpdateCommand.this.threadLocalOperationalState.set(operationalState);
+ PhysicalPortUpdateCommand.this.threadLocalDeviceTransaction.set(transactionBuilder);
+ updatePhysicalPort(transactionBuilder, psNodeiid, Lists.newArrayList(inputPhysicalPort));
+ }
+ };
+ getDeviceInfo().addJobToQueue(opWaitingJob);
+ }
+
+ private void createConfigWaitJob(final InstanceIdentifier<Node> psNodeiid,
+ final HwvtepPhysicalPortAugmentation inputPhysicalPort,
+ final VlanBindings vlanBinding,
+ final Map configDependencies,
+ final InstanceIdentifier<VlanBindings> vlanIid) {
+
+ DependentJob<VlanBindings> configWaitingJob = new DependentJob.ConfigWaitingJob(
+ vlanIid, vlanBinding, configDependencies) {
+ @Override
+ public void onDependencyResolved(final HwvtepOperationalState operationalState,
+ final TransactionBuilder transactionBuilder) {
+ PhysicalPortUpdateCommand.this.threadLocalOperationalState.set(operationalState);
+ PhysicalPortUpdateCommand.this.threadLocalDeviceTransaction.set(transactionBuilder);
+ updatePhysicalPort(transactionBuilder, psNodeiid, Lists.newArrayList(inputPhysicalPort));
+ }
+ };
+ getDeviceInfo().addJobToQueue(configWaitingJob);
+ }
+
+ private InstanceIdentifier<TerminationPoint> getTpIid(final InstanceIdentifier<Node> psNodeiid,
+ final String portName) {
+ return psNodeiid.child(
+ TerminationPoint.class, new TerminationPointKey(new TpId(portName)));
+ }
+
+ private InstanceIdentifier<VlanBindings> getVlanBindingIid(
+ final InstanceIdentifier<Node> psNodeiid,
+ final PhysicalPort physicalPort,
+ final VlanBindings vlanBinding) {
+
+ return psNodeiid.child(
+ TerminationPoint.class, new TerminationPointKey(new TpId(physicalPort.getName())))
+ .augmentation(HwvtepPhysicalPortAugmentation.class)
+ .child(VlanBindings.class, new VlanBindingsKey(vlanBinding.getVlanIdKey()));
+ }
+
+ static class VlanBindingsUnMetDependencyGetter extends UnMetDependencyGetter<VlanBindings> {
+
+ public List<InstanceIdentifier<?>> getLogicalSwitchDependencies(VlanBindings data) {
+ if (data == null) {
+ return Collections.emptyList();
+ }
+ return Collections.singletonList(data.getLogicalSwitchRef().getValue());
+ }
+
+ public List<InstanceIdentifier<?>> getTerminationPointDependencies(VlanBindings data) {
+ return Collections.emptyList();
+ }
+ }
+