Viswanath KSP
Committed by Ray Milkey

[onos-5251] This changeset contains implementation of purging intents from ONOS UI

[onos-5251] Addressed review comments from patchset-1
addressed review comments from patchset-2

Change-Id: I93ebe7798b5324fb18738540d3ef6cef6ada395e
...@@ -150,6 +150,7 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase { ...@@ -150,6 +150,7 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase {
150 private static final String NAMES = "names"; 150 private static final String NAMES = "names";
151 private static final String ACTIVATE = "activate"; 151 private static final String ACTIVATE = "activate";
152 private static final String DEACTIVATE = "deactivate"; 152 private static final String DEACTIVATE = "deactivate";
153 + private static final String PURGE = "purge";
153 154
154 155
155 private static final String MY_APP_ID = "org.onosproject.gui"; 156 private static final String MY_APP_ID = "org.onosproject.gui";
...@@ -438,9 +439,7 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase { ...@@ -438,9 +439,7 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase {
438 Key key = Key.of(intentKey, applicId); 439 Key key = Key.of(intentKey, applicId);
439 log.debug("Attempting to select intent by key={}", key); 440 log.debug("Attempting to select intent by key={}", key);
440 441
441 - Intent intent = intentService.getIntent(key); 442 + return intentService.getIntent(key);
442 -
443 - return intent;
444 } 443 }
445 444
446 private final class RemoveIntent extends RequestHandler { 445 private final class RemoveIntent extends RequestHandler {
...@@ -448,14 +447,22 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase { ...@@ -448,14 +447,22 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase {
448 super(REMOVE_INTENT); 447 super(REMOVE_INTENT);
449 } 448 }
450 449
450 + private boolean isIntentToBePurged(ObjectNode payload) {
451 + return bool(payload, PURGE);
452 + }
453 +
451 @Override 454 @Override
452 public void process(long sid, ObjectNode payload) { 455 public void process(long sid, ObjectNode payload) {
453 Intent intent = findIntentByPayload(payload); 456 Intent intent = findIntentByPayload(payload);
454 if (intent == null) { 457 if (intent == null) {
455 log.warn("Unable to find intent from payload {}", payload); 458 log.warn("Unable to find intent from payload {}", payload);
456 } else { 459 } else {
457 - log.debug("Removing intent {}", intent.key()); 460 + log.debug("Withdrawing / Purging intent {}", intent.key());
458 - intentService.withdraw(intent); 461 + if (isIntentToBePurged(payload)) {
462 + intentService.purge(intent);
463 + } else {
464 + intentService.withdraw(intent);
465 + }
459 } 466 }
460 } 467 }
461 } 468 }
......
...@@ -37,6 +37,11 @@ ...@@ -37,6 +37,11 @@
37 tooltip tt-msg="deactivateTip" 37 tooltip tt-msg="deactivateTip"
38 ng-click="(!!selId && isIntentInstalled()) ? deactivateIntent():''"></div> 38 ng-click="(!!selId && isIntentInstalled()) ? deactivateIntent():''"></div>
39 39
40 + <div ng-class="{'active': !!selId && isIntentWithdrawn()}"
41 + icon icon-id="garbage" icon-size="42"
42 + tooltip tt-msg="purgeTip"
43 + ng-click="(!!selId && isIntentWithdrawn()) ? purgeIntent():''"></div>
44 +
40 45
41 </div> 46 </div>
42 </div> 47 </div>
......
...@@ -72,6 +72,7 @@ ...@@ -72,6 +72,7 @@
72 72
73 $scope.topoTip = 'Show selected intent on topology view'; 73 $scope.topoTip = 'Show selected intent on topology view';
74 $scope.deactivateTip = 'Remove selected intent'; 74 $scope.deactivateTip = 'Remove selected intent';
75 + $scope.purgeTip = 'Purge selected intent';
75 76
76 $scope.showIntent = function () { 77 $scope.showIntent = function () {
77 var d = $scope.intentData; 78 var d = $scope.intentData;
...@@ -82,14 +83,23 @@ ...@@ -82,14 +83,23 @@
82 return $scope.intentState === 'Installed'; 83 return $scope.intentState === 'Installed';
83 }; 84 };
84 85
85 - $scope.deactivateIntent = function () { 86 + $scope.isIntentWithdrawn = function () {
86 - var content = ds.createDiv(); 87 + return $scope.intentState === 'Withdrawn';
88 + };
89 +
90 + function executeAction(bPurge) {
91 + var content = ds.createDiv(),
92 + txt = bPurge ? 'purge' : 'withdraw' ;
87 93
88 - content.append('p') 94 + $scope.intentData.intentPurge = bPurge;
89 - .text('Are you sure you want to remove the selected intent?'); 95 +
96 + content.append('p').
97 + text('Are you sure you want to '+ txt +
98 + ' the selected intent?');
90 99
91 function dOk() { 100 function dOk() {
92 var d = $scope.intentData; 101 var d = $scope.intentData;
102 + $log.debug(d);
93 d && tts.removeIntent(d); 103 d && tts.removeIntent(d);
94 $scope.fired = true; 104 $scope.fired = true;
95 } 105 }
...@@ -105,6 +115,14 @@ ...@@ -105,6 +115,14 @@
105 .addOk(dOk) 115 .addOk(dOk)
106 .addCancel(dCancel) 116 .addCancel(dCancel)
107 .bindKeys(); 117 .bindKeys();
118 + }
119 +
120 + $scope.deactivateIntent = function () {
121 + executeAction(false);
122 + };
123 +
124 + $scope.purgeIntent = function () {
125 + executeAction(true);
108 }; 126 };
109 127
110 $scope.briefToggle = function () { 128 $scope.briefToggle = function () {
......
...@@ -181,11 +181,13 @@ ...@@ -181,11 +181,13 @@
181 wss.sendEvent('removeIntent', { 181 wss.sendEvent('removeIntent', {
182 appId: d.appId, 182 appId: d.appId,
183 appName: d.appName, 183 appName: d.appName,
184 - key: d.key 184 + key: d.key,
185 + purge: d.intentPurge
185 }); 186 });
186 trafficMode = 'intents'; 187 trafficMode = 'intents';
187 hoverMode = null; 188 hoverMode = null;
188 - flash.flash('Intent removed'); 189 + var txt = d.intentPurge ? 'purged' : 'withdrawn';
190 + flash.flash('Intent ' + txt);
189 } 191 }
190 192
191 function addMultiSourceIntent () { 193 function addMultiSourceIntent () {
......