diff --git a/nso-nipap/nso-nipap/src/java/src/net/spritelink/nsonipap/ConfigCdbSub.java b/nso-nipap/nso-nipap/src/java/src/net/spritelink/nsonipap/ConfigCdbSub.java index 32120a5e1..e46ae6717 100644 --- a/nso-nipap/nso-nipap/src/java/src/net/spritelink/nsonipap/ConfigCdbSub.java +++ b/nso-nipap/nso-nipap/src/java/src/net/spritelink/nsonipap/ConfigCdbSub.java @@ -475,7 +475,9 @@ else if (req.op == Operation.DEALLOCATE && (req.t == Type.Request)) { LOGGER.info("Deallocate Prefix (" + path + ")"); - removePrefixFromNIPAP(path); + if(maapi.exists(th, path + "/" + nipap._prefix_)){ + removePrefixFromNIPAP(path); + } removeResponseFromCDB(path); } @@ -485,6 +487,15 @@ else if (req.op == Operation.DEALLOCATE && (req.t == Type.Request)) { */ else if (req.op == Operation.DEALLOCATE && (req.t == Type.FromPrefixRequest)) { + String path = req.path + "/" + nipap._response_; + + LOGGER.info("Deallocate Prefix (" + path + ")"); + + if(maapi.exists(th, path + "/" + nipap._prefix_)){ + removePrefixFromNIPAP(path); + } + + removeResponseFromCDB(path); } /* @@ -611,10 +622,18 @@ else if (kp[1].toString().equals("nipap:from-prefix-request") && r.t = Type.Request; r.op = Operation.DEALLOCATE; reqs.add(r); - //we dont need to look at children - return DiffIterateResultFlag.ITER_CONTINUE; } - break; + else if (kp[1].toString().equals("nipap:from-prefix-request") && + kp.length == 8){ + r.prefix_key = (ConfKey)kp[0]; + r.request_key = (ConfKey)kp[2]; + r.pool_key = (ConfKey)kp[4]; + r.t = Type.FromPrefixRequest; + r.op = Operation.DEALLOCATE; + reqs.add(r); + } + //we dont need to look at children + return DiffIterateResultFlag.ITER_CONTINUE; } case MOP_VALUE_SET: { if (kp[1].toString().equals("nipap:attributes") &&