driver APIs from remove user defined groups
diff --git a/cli/cli/c_actions.py b/cli/cli/c_actions.py
index 17e41b5..a7b95b5 100755
--- a/cli/cli/c_actions.py
+++ b/cli/cli/c_actions.py
@@ -175,18 +175,6 @@
- if not detail:
- detail = data.get('detail', 'default')
- url = "http://%s/rest/v1/" % sdnsh.controller + (select_url % data)
-
- result = sdnsh.store.rest_simple_request(url)
- check_rest_result(result)
- if sdnsh.description: # description debugging
- print "command_display_rest: result ", result
- entries = json.loads(result)
-
-
-
def write_fields(obj_type, obj_id, data):
"""
Typical action to update fields of a row in the model
diff --git a/src/main/java/net/onrc/onos/core/drivermanager/OFSwitchImplCPqD13.java b/src/main/java/net/onrc/onos/core/drivermanager/OFSwitchImplCPqD13.java
index cae7d41..5bd8e08 100644
--- a/src/main/java/net/onrc/onos/core/drivermanager/OFSwitchImplCPqD13.java
+++ b/src/main/java/net/onrc/onos/core/drivermanager/OFSwitchImplCPqD13.java
@@ -1681,7 +1681,7 @@
}
}
- private void createIndirectGroup(int groupId, MacAddress srcMac,
+ private EcmpInfo createIndirectGroup(int groupId, MacAddress srcMac,
MacAddress dstMac, PortNumber outPort, int gotoGroupNo,
int mplsLabel, boolean bos) {
List<BucketInfo> buckets = new ArrayList<BucketInfo>();
@@ -1694,7 +1694,7 @@
log.debug(
"createIndirectGroup: Creating indirect group {} in sw {} "
+ "with: {}", groupId, getStringId(), ecmpInfo);
- return;
+ return ecmpInfo;
}
private EcmpInfo createInnermostLabelGroup(int innermostGroupId,
@@ -1713,7 +1713,7 @@
EcmpInfo ecmpInfo = new EcmpInfo(innermostGroupId, buckets);
setEcmpGroup(ecmpInfo);
log.debug(
- "createInnermostLabelGroup: Creating indirect group {} in sw {} "
+ "createInnermostLabelGroup: Creating select group {} in sw {} "
+ "with: {}", innermostGroupId, getStringId(), ecmpInfo);
return ecmpInfo;
}
@@ -1792,10 +1792,11 @@
if (i == 0) {
/* Outermost label processing */
int currGroupId = groupid.incrementAndGet();
- createIndirectGroup(currGroupId,
+ EcmpInfo indirectGroup = createIndirectGroup(currGroupId,
null, null, sp, -1,
labelStack.get(i).intValue(), false);
lastSetOfGroupIds.put(sp, currGroupId);
+ userDefinedGroups.put(currGroupId, indirectGroup);
}
else if (i == (labelStack.size() - 1)) {
/* Innermost label processing */
@@ -1812,15 +1813,18 @@
else {
/* Middle label processing */
int currGroupId = groupid.incrementAndGet();
- createIndirectGroup(currGroupId,
+ EcmpInfo indirectGroup = createIndirectGroup(currGroupId,
null, null, null,
lastSetOfGroupIds.get(sp),
labelStack.get(i).intValue(), false);
/* Overwrite with this iteration's group IDs */
lastSetOfGroupIds.put(sp, currGroupId);
+ userDefinedGroups.put(currGroupId, indirectGroup);
}
}
}
+ log.debug("createGroup: group created with innermost group id {}",
+ innermostGroupId);
return innermostGroupId;
}
@@ -1847,7 +1851,27 @@
* @return success/fail
*/
public boolean removeGroup(int groupId) {
- return false;
+ EcmpInfo group = userDefinedGroups.get(groupId);
+ if (group == null) {
+ log.warn("removeGroup: with invalid group id");
+ return false;
+ }
+ for (BucketInfo bucket : group.buckets) {
+ int currGroupIdToBeDeleted = bucket.groupNo;
+ while (currGroupIdToBeDeleted != -1) {
+ /* Assuming indirect groups with single buckets */
+ int nextGroupIdToBeDeleted =
+ userDefinedGroups.get(currGroupIdToBeDeleted).
+ buckets.get(0).groupNo;
+ deleteGroup(groupId);
+ userDefinedGroups.remove(currGroupIdToBeDeleted);
+ currGroupIdToBeDeleted = nextGroupIdToBeDeleted;
+ }
+ }
+
+ userDefinedGroups.remove(groupid);
+ log.debug("removeGroup: removed group with group id {}", groupId);
+ return true;
}
@Override