From da9876df29c1028e879bd6d4c352a52cda026a15 Mon Sep 17 00:00:00 2001 From: Prasanna Huddar Date: Thu, 28 Nov 2013 00:25:05 +0530 Subject: [PATCH] Fixed typo in group service. Modified Group and Meter flow Impl Signed-off-by: Prasanna Huddar Change-Id: Ie77e9f6ac4dead4a337dd16cf5cd5c891b5981bd --- .../consumer/impl/GroupConsumerImpl.java | 118 +++++++++----- .../consumer/impl/MeterConsumerImpl.java | 152 ++++++++++-------- .../src/main/yang/group-service.yang | 2 +- 3 files changed, 160 insertions(+), 112 deletions(-) diff --git a/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/consumer/impl/GroupConsumerImpl.java b/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/consumer/impl/GroupConsumerImpl.java index 851e7d9b26..714ac89ba1 100644 --- a/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/consumer/impl/GroupConsumerImpl.java +++ b/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/consumer/impl/GroupConsumerImpl.java @@ -2,6 +2,7 @@ package org.opendaylight.controller.forwardingrulesmanager.consumer.impl; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; @@ -33,6 +34,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.Add import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.GroupAdded; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.GroupRemoved; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.GroupUpdated; +import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.RemoveGroupInputBuilder; + import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.SalGroupListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.SalGroupService; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.UpdateGroupInputBuilder; @@ -40,10 +43,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.gro import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes.GroupType; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.config.rev131024.meters.Meter; import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.NotificationListener; +import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -225,7 +230,7 @@ public class GroupConsumerImpl implements IForwardingRulesManager { return new Status(StatusCode.BADREQUEST, "Group Name is invalid"); } - returnResult = doesGroupEntryExists(group.getKey(), groupName, containerName); + /* returnResult = doesGroupEntryExists(group.getKey(), groupName, containerName); if (FRMUtil.operation.ADD == operation && returnResult) { logger.error("Record with same Group Name exists"); @@ -233,7 +238,7 @@ public class GroupConsumerImpl implements IForwardingRulesManager { } else if (!returnResult) { logger.error("Group record does not exist"); return new Status(StatusCode.BADREQUEST, "Group record does not exist"); - } + }*/ if (!(group.getGroupType().getIntValue() >= GroupType.GroupAll.getIntValue() && group.getGroupType() .getIntValue() <= GroupType.GroupFf.getIntValue())) { @@ -259,7 +264,7 @@ public class GroupConsumerImpl implements IForwardingRulesManager { } - private boolean doesGroupEntryExists(GroupKey key, String groupName, String containerName) { + /* private boolean doesGroupEntryExists(GroupKey key, String groupName, String containerName) { if (!originalSwGroupView.containsKey(key)) { return false; } @@ -271,8 +276,8 @@ public class GroupConsumerImpl implements IForwardingRulesManager { } } } - return false; - } + return true; + }*/ /** * Update Group entries to the southbound plugin/inventory and our internal @@ -292,11 +297,11 @@ public class GroupConsumerImpl implements IForwardingRulesManager { return groupOperationStatus; } - if (originalSwGroupView.containsKey(groupKey)) { + /*if (originalSwGroupView.containsKey(groupKey)) { originalSwGroupView.remove(groupKey); originalSwGroupView.put(groupKey, groupUpdateDataObject); } - +*/ if (groupUpdateDataObject.isInstall()) { UpdateGroupInputBuilder groupData = new UpdateGroupInputBuilder(); updateGroupBuilder = new UpdatedGroupBuilder(); @@ -304,10 +309,10 @@ public class GroupConsumerImpl implements IForwardingRulesManager { groupData.setUpdatedGroup(updateGroupBuilder.build()); // TODO how to get original group and modified group. - if (installedSwGroupView.containsKey(groupKey)) { + /* if (installedSwGroupView.containsKey(groupKey)) { installedSwGroupView.remove(groupKey); installedSwGroupView.put(groupKey, groupUpdateDataObject); - } + }*/ groupService.updateGroup(groupData.build()); } @@ -330,7 +335,7 @@ public class GroupConsumerImpl implements IForwardingRulesManager { return groupOperationStatus; } - originalSwGroupView.put(groupKey, groupAddDataObject); + //originalSwGroupView.put(groupKey, groupAddDataObject); if (groupAddDataObject.isInstall()) { AddGroupInputBuilder groupData = new AddGroupInputBuilder(); @@ -339,19 +344,49 @@ public class GroupConsumerImpl implements IForwardingRulesManager { groupData.setGroupId(groupAddDataObject.getGroupId()); groupData.setGroupType(groupAddDataObject.getGroupType()); groupData.setNode(groupAddDataObject.getNode()); - installedSwGroupView.put(groupKey, groupAddDataObject); + // installedSwGroupView.put(groupKey, groupAddDataObject); groupService.addGroup(groupData.build()); } return groupOperationStatus; } - private RpcResult commitToPlugin(internalTransaction transaction) { + /** + * Remove Group to the southbound plugin and our internal database + * + * @param path + * @param dataObject + */ + private Status removeGroup(InstanceIdentifier path, Group groupRemoveDataObject) { + GroupKey groupKey = groupRemoveDataObject.getKey(); + Status groupOperationStatus = validateGroup(groupRemoveDataObject, FRMUtil.operation.ADD); + + if (!groupOperationStatus.isSuccess()) { + logger.error("Group data object validation failed %s" + groupRemoveDataObject.getGroupName()); + return groupOperationStatus; + } + //originalSwGroupView.put(groupKey, groupAddDataObject); + + if (groupRemoveDataObject.isInstall()) { + RemoveGroupInputBuilder groupData = new RemoveGroupInputBuilder(); + groupData.setBuckets(groupRemoveDataObject.getBuckets()); + groupData.setContainerName(groupRemoveDataObject.getContainerName()); + groupData.setGroupId(groupRemoveDataObject.getGroupId()); + groupData.setGroupType(groupRemoveDataObject.getGroupType()); + groupData.setNode(groupRemoveDataObject.getNode()); + // installedSwGroupView.put(groupKey, groupAddDataObject); + groupService.removeGroup(groupData.build()); + } + + return groupOperationStatus; + } + + private RpcResult commitToPlugin(InternalTransaction transaction) { for (Entry, Group> entry : transaction.additions.entrySet()) { if (!addGroup(entry.getKey(), entry.getValue()).isSuccess()) { transaction.additions.remove(entry.getKey()); - return Rpcs.getRpcResult(false, null, null); + return Rpcs.getRpcResult(false, null, Collections.emptySet()); } } @@ -359,12 +394,18 @@ public class GroupConsumerImpl implements IForwardingRulesManager { if (!updateGroup(entry.getKey(), entry.getValue()).isSuccess()) { transaction.updates.remove(entry.getKey()); - return Rpcs.getRpcResult(false, null, null); + return Rpcs.getRpcResult(false, null, Collections.emptySet()); } } - for (InstanceIdentifier removal : transaction.removals) { - // removeFlow(removal); + for (InstanceIdentifier groupId : transaction.removals) { + DataObject removeValue = transaction.getModification().getOriginalConfigurationData().get(groupId); + + if(removeValue instanceof Group) { + if(!removeGroup(groupId, (Group)removeValue).isSuccess()) { + return Rpcs.getRpcResult(false, null, Collections.emptySet()); + } + } } return Rpcs.getRpcResult(true, null, null); @@ -372,19 +413,18 @@ public class GroupConsumerImpl implements IForwardingRulesManager { private final class GroupDataCommitHandler implements DataCommitHandler, DataObject> { - @SuppressWarnings("unchecked") @Override public DataCommitTransaction, DataObject> requestCommit( DataModification, DataObject> modification) { // We should verify transaction System.out.println("Coming in GroupDatacommitHandler"); - internalTransaction transaction = new internalTransaction(modification); + InternalTransaction transaction = new InternalTransaction(modification); transaction.prepareUpdate(); return transaction; } } - private final class internalTransaction implements DataCommitTransaction, DataObject> { + private final class InternalTransaction implements DataCommitTransaction, DataObject> { private final DataModification, DataObject> modification; @@ -393,7 +433,7 @@ public class GroupConsumerImpl implements IForwardingRulesManager { return modification; } - public internalTransaction(DataModification, DataObject> modification) { + public InternalTransaction(DataModification, DataObject> modification) { this.modification = modification; } @@ -407,33 +447,31 @@ public class GroupConsumerImpl implements IForwardingRulesManager { * */ void prepareUpdate() { - - Set, DataObject>> puts = modification.getUpdatedConfigurationData().entrySet(); - for (Entry, DataObject> entry : puts) { + + Set, DataObject>> groupAdded = modification.getCreatedConfigurationData().entrySet(); + for (Entry, DataObject> entry : groupAdded) { + if (entry.getValue() instanceof Group) { + Group group = (Group) entry.getValue(); + additions.put(entry.getKey(), group); + } + + } + + Set, DataObject>> groupUpdate = modification.getUpdatedConfigurationData().entrySet(); + for (Entry, DataObject> entry : groupUpdate) { if (entry.getValue() instanceof Group) { Group group = (Group) entry.getValue(); - preparePutEntry(entry.getKey(), group); + ///will be fixed once getUpdatedConfigurationData returns only updated data not created data with it. + if (additions.containsKey(entry.getKey())) { + updates.put(entry.getKey(), group); + } } } removals = modification.getRemovedConfigurationData(); } - - private void preparePutEntry(InstanceIdentifier key, Group group) { - - Group original = originalSwGroupView.get(key); - if (original != null) { - // It is update for us - - updates.put(key, group); - } else { - // It is addition for us - - additions.put(key, group); - } - } - + /** * We are OK to go with execution of plan * @@ -457,7 +495,7 @@ public class GroupConsumerImpl implements IForwardingRulesManager { // NOOP - we did not modified any internal state during // requestCommit phase // return Rpcs.getRpcResult(true, null, Collections.emptySet()); - return Rpcs.getRpcResult(true, null, null); + return Rpcs.getRpcResult(true, null, Collections.emptySet()); } diff --git a/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/consumer/impl/MeterConsumerImpl.java b/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/consumer/impl/MeterConsumerImpl.java index bd0ceb3fea..483b9a4719 100644 --- a/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/consumer/impl/MeterConsumerImpl.java +++ b/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/consumer/impl/MeterConsumerImpl.java @@ -2,6 +2,7 @@ package org.opendaylight.controller.forwardingrulesmanager.consumer.impl; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; @@ -33,6 +34,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.Add import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.MeterAdded; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.MeterRemoved; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.MeterUpdated; +import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.RemoveMeterInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.SalMeterListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.SalMeterService; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterInputBuilder; @@ -45,6 +47,7 @@ import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.binding.NotificationListener; +import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -57,13 +60,17 @@ public class MeterConsumerImpl implements IForwardingRulesManager { private MeterDataCommitHandler commitHandler; private ConcurrentMap originalSwMeterView; + @SuppressWarnings("unused") private ConcurrentMap installedSwMeterView; - + @SuppressWarnings("unused") private ConcurrentMap> nodeMeters; + @SuppressWarnings("unused") private ConcurrentMap inactiveMeters; + @SuppressWarnings("unused") + private IContainer container; private IClusterContainerServices clusterMeterContainerService = null; - private IContainer container; + public MeterConsumerImpl() { InstanceIdentifier path = InstanceIdentifier.builder(Meters.class).child(Meter.class) @@ -218,11 +225,11 @@ public class MeterConsumerImpl implements IForwardingRulesManager { meterBuilder.setMeterBandHeaders(meterAddDataObject.getMeterBandHeaders()); meterBuilder.setMeterId(meterAddDataObject.getMeterId()); meterBuilder.setNode(meterAddDataObject.getNode()); - originalSwMeterView.put(meterKey, meterAddDataObject); + // originalSwMeterView.put(meterKey, meterAddDataObject); meterService.addMeter(meterBuilder.build()); } - originalSwMeterView.put(meterKey, meterAddDataObject); + // originalSwMeterView.put(meterKey, meterAddDataObject); } else { return new Status(StatusCode.BADREQUEST, "Meter Key or attribute validation failed"); } @@ -243,10 +250,10 @@ public class MeterConsumerImpl implements IForwardingRulesManager { if (null != meterKey && validateMeter(meterUpdateDataObject, FRMUtil.operation.UPDATE).isSuccess()) { - if (originalSwMeterView.containsKey(meterKey)) { + /* if (originalSwMeterView.containsKey(meterKey)) { originalSwMeterView.remove(meterKey); originalSwMeterView.put(meterKey, meterUpdateDataObject); - } + }*/ if (meterUpdateDataObject.isInstall()) { UpdateMeterInputBuilder updateMeterInputBuilder = new UpdateMeterInputBuilder(); @@ -254,10 +261,10 @@ public class MeterConsumerImpl implements IForwardingRulesManager { updateMeterBuilder.fieldsFrom(meterUpdateDataObject); updateMeterInputBuilder.setUpdatedMeter(updateMeterBuilder.build()); - if (installedSwMeterView.containsKey(meterKey)) { + /* if (installedSwMeterView.containsKey(meterKey)) { installedSwMeterView.remove(meterKey); installedSwMeterView.put(meterKey, meterUpdateDataObject); - } + }*/ meterService.updateMeter(updateMeterInputBuilder.build()); } @@ -276,18 +283,23 @@ public class MeterConsumerImpl implements IForwardingRulesManager { * * @param dataObject */ - private Status RemoveMeter(InstanceIdentifier path, Meter meterUpdateDataObject) { - MeterKey meterKey = meterUpdateDataObject.getKey(); - - if (null != meterKey && validateMeter(meterUpdateDataObject, FRMUtil.operation.ADD).isSuccess()) { - if (meterUpdateDataObject.isInstall()) { - UpdateMeterInputBuilder updateMeterBuilder = new UpdateMeterInputBuilder(); - - installedSwMeterView.put(meterKey, meterUpdateDataObject); - meterService.updateMeter(updateMeterBuilder.build()); + private Status removeMeter(InstanceIdentifier path, Meter meterRemoveDataObject) { + MeterKey meterKey = meterRemoveDataObject.getKey(); + + if (null != meterKey && validateMeter(meterRemoveDataObject, FRMUtil.operation.DELETE).isSuccess()) { + if (meterRemoveDataObject.isInstall()) { + RemoveMeterInputBuilder meterBuilder = new RemoveMeterInputBuilder(); + meterBuilder.setContainerName(meterRemoveDataObject.getContainerName()); + meterBuilder.setNode(meterRemoveDataObject.getNode()); + meterBuilder.setFlags(meterRemoveDataObject.getFlags()); + meterBuilder.setMeterBandHeaders(meterRemoveDataObject.getMeterBandHeaders()); + meterBuilder.setMeterId(meterRemoveDataObject.getMeterId()); + meterBuilder.setNode(meterRemoveDataObject.getNode()); + // originalSwMeterView.put(meterKey, meterAddDataObject); + meterService.removeMeter(meterBuilder.build()); } - originalSwMeterView.put(meterKey, meterUpdateDataObject); + // originalSwMeterView.put(meterKey, meterAddDataObject); } else { return new Status(StatusCode.BADREQUEST, "Meter Key or attribute validation failed"); } @@ -299,7 +311,6 @@ public class MeterConsumerImpl implements IForwardingRulesManager { String containerName; String meterName; Status returnStatus = null; - boolean returnResult; if (null != meter) { containerName = meter.getContainerName(); @@ -319,7 +330,7 @@ public class MeterConsumerImpl implements IForwardingRulesManager { return returnStatus; } - returnResult = doesMeterEntryExists(meter.getKey(), meterName, containerName); + /* returnResult = doesMeterEntryExists(meter.getKey(), meterName, containerName); if (FRMUtil.operation.ADD == operation && returnResult) { logger.error("Record with same Meter Name exists"); @@ -329,7 +340,7 @@ public class MeterConsumerImpl implements IForwardingRulesManager { logger.error("Group record does not exist"); returnStatus = new Status(StatusCode.BADREQUEST, "Meter record does not exist"); return returnStatus; - } + }*/ for (int i = 0; i < meter.getMeterBandHeaders().getMeterBandHeader().size(); i++) { if (!meter.getFlags().isMeterBurst()) { @@ -367,7 +378,7 @@ public class MeterConsumerImpl implements IForwardingRulesManager { return new Status(StatusCode.SUCCESS); } - private boolean doesMeterEntryExists(MeterKey key, String meterName, String containerName) { + /*private boolean doesMeterEntryExists(MeterKey key, String meterName, String containerName) { if (!originalSwMeterView.containsKey(key)) { return false; } @@ -380,34 +391,9 @@ public class MeterConsumerImpl implements IForwardingRulesManager { } } return false; - } - - private RpcResult commitToPlugin(internalTransaction transaction) { - for (Entry, Meter> entry : transaction.additions.entrySet()) { - - if (!addMeter(entry.getKey(), entry.getValue()).isSuccess()) { - return Rpcs.getRpcResult(false, null, null); - } - } - for (@SuppressWarnings("unused") - Entry, Meter> entry : transaction.updates.entrySet()) { - - if (!updateMeter(entry.getKey(), entry.getValue()).isSuccess()) { - return Rpcs.getRpcResult(false, null, null); - } - } - - for (InstanceIdentifier removal : transaction.removals) { - /* - * if (!removeMeter(entry.getKey(),entry.getValue()).isSuccess()) { - * return Rpcs.getRpcResult(false, null, null); } - */ - } - - return Rpcs.getRpcResult(true, null, null); - } + }*/ - private final class internalTransaction implements DataCommitTransaction, DataObject> { + private final class InternalTransaction implements DataCommitTransaction, DataObject> { private final DataModification, DataObject> modification; @@ -416,7 +402,7 @@ public class MeterConsumerImpl implements IForwardingRulesManager { return modification; } - public internalTransaction(DataModification, DataObject> modification) { + public InternalTransaction(DataModification, DataObject> modification) { this.modification = modification; } @@ -430,33 +416,30 @@ public class MeterConsumerImpl implements IForwardingRulesManager { * */ void prepareUpdate() { - - Set, DataObject>> puts = modification.getUpdatedConfigurationData().entrySet(); - for (Entry, DataObject> entry : puts) { + + Set, DataObject>> addMeter = modification.getCreatedConfigurationData().entrySet(); + for (Entry, DataObject> entry : addMeter) { if (entry.getValue() instanceof Meter) { - Meter Meter = (Meter) entry.getValue(); - preparePutEntry(entry.getKey(), Meter); + Meter meter = (Meter) entry.getValue(); + additions.put(entry.getKey(), meter); } } + + Set, DataObject>> updateMeter = modification.getUpdatedConfigurationData().entrySet(); + for (Entry, DataObject> entry : updateMeter) { + if (entry.getValue() instanceof Meter) { + Meter meter = (Meter) entry.getValue(); + ///will be fixed once getUpdatedConfigurationData returns only updated data not created data with it. + if (!additions.containsKey(entry.getKey())) { + updates.put(entry.getKey(), meter); + } + } + } removals = modification.getRemovedConfigurationData(); } - private void preparePutEntry(InstanceIdentifier key, Meter meter) { - - Meter original = originalSwMeterView.get(key); - if (original != null) { - // It is update for us - - updates.put(key, meter); - } else { - // It is addition for us - - additions.put(key, meter); - } - } - /** * We are OK to go with execution of plan * @@ -480,10 +463,37 @@ public class MeterConsumerImpl implements IForwardingRulesManager { // NOOP - we did not modified any internal state during // requestCommit phase // return Rpcs.getRpcResult(true, null, Collections.emptySet()); - return Rpcs.getRpcResult(true, null, null); + return Rpcs.getRpcResult(true, null, Collections.emptySet()); + + } + + } + + private RpcResult commitToPlugin(InternalTransaction transaction) { + for (Entry, Meter> entry : transaction.additions.entrySet()) { + + if (!addMeter(entry.getKey(), entry.getValue()).isSuccess()) { + return Rpcs.getRpcResult(false, null, Collections.emptySet()); + } + } + for (Entry, Meter> entry : transaction.updates.entrySet()) { + + if (!updateMeter(entry.getKey(), entry.getValue()).isSuccess()) { + return Rpcs.getRpcResult(false, null, Collections.emptySet()); + } + } + for (InstanceIdentifier meterId : transaction.removals) { + DataObject removeValue = transaction.getModification().getOriginalConfigurationData().get(meterId); + + if(removeValue instanceof Meter) { + if(!removeMeter(meterId, (Meter)removeValue).isSuccess()) { + return Rpcs.getRpcResult(false, null, Collections.emptySet()); + } + } } + return Rpcs.getRpcResult(true, null, Collections.emptySet()); } private final class MeterDataCommitHandler implements DataCommitHandler, DataObject> { @@ -492,7 +502,7 @@ public class MeterConsumerImpl implements IForwardingRulesManager { DataModification, DataObject> modification) { // We should verify transaction System.out.println("Coming in MeterDataCommitHandler"); - internalTransaction transaction = new internalTransaction(modification); + InternalTransaction transaction = new InternalTransaction(modification); transaction.prepareUpdate(); return transaction; } diff --git a/opendaylight/md-sal/model/model-flow-service/src/main/yang/group-service.yang b/opendaylight/md-sal/model/model-flow-service/src/main/yang/group-service.yang index bb01035328..b21423b7d4 100644 --- a/opendaylight/md-sal/model/model-flow-service/src/main/yang/group-service.yang +++ b/opendaylight/md-sal/model/model-flow-service/src/main/yang/group-service.yang @@ -41,7 +41,7 @@ module sal-group { rpc remove-group { input { - uses group-update; + uses node-group; uses tr:transaction-aware; } output { -- 2.36.6