*/
public int getControlLoopTimeout(Integer defaultTimeout) {
if (this.processor != null && this.processor.getControlLoop() != null) {
- return this.processor.getControlLoop().getTimeout();
+ Integer timeout = this.processor.getControlLoop().getTimeout();
+ if (timeout != null && timeout > 0) {
+ return timeout;
+ }
}
if (defaultTimeout != null) {
return defaultTimeout;
assertTrue(60 == manager.getControlLoopTimeout(null));
}
+ @Test
+ public void testControlLoopTimeout_ZeroTimeout() throws IOException {
+ InputStream is = new FileInputStream(new File("src/test/resources/test-zero-timeout.yaml"));
+ final String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ UUID requestId = UUID.randomUUID();
+ VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
+ onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+ onsetEvent.setRequestId(requestId);
+ onsetEvent.setTarget("generic-vnf.vnf-id");
+ onsetEvent.setClosedLoopAlarmStart(Instant.now());
+ onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ onsetEvent.setAai(new HashMap<>());
+ onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = makeManager(onsetEvent);
+
+ VirtualControlLoopNotification notification = manager.activate(yamlString, onsetEvent);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ assertTrue(0 == manager.getControlLoopTimeout(null));
+ assertTrue(120 == manager.getControlLoopTimeout(120));
+ }
+
+ @Test
+ public void testControlLoopTimeout_NullTimeout() throws IOException {
+ InputStream is = new FileInputStream(new File("src/test/resources/test-null-timeout.yaml"));
+ final String yamlString = IOUtils.toString(is, StandardCharsets.UTF_8);
+
+ UUID requestId = UUID.randomUUID();
+ VirtualControlLoopEvent onsetEvent = new VirtualControlLoopEvent();
+ onsetEvent.setClosedLoopControlName("TwoOnsetTest");
+ onsetEvent.setRequestId(requestId);
+ onsetEvent.setTarget("generic-vnf.vnf-id");
+ onsetEvent.setClosedLoopAlarmStart(Instant.now());
+ onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET);
+ onsetEvent.setAai(new HashMap<>());
+ onsetEvent.getAai().put("generic-vnf.vnf-name", "onsetOne");
+
+ ControlLoopEventManager manager = makeManager(onsetEvent);
+
+ VirtualControlLoopNotification notification = manager.activate(yamlString, onsetEvent);
+ assertNotNull(notification);
+ assertEquals(ControlLoopNotificationType.ACTIVE, notification.getNotification());
+
+ assertTrue(0 == manager.getControlLoopTimeout(null));
+ assertTrue(120 == manager.getControlLoopTimeout(120));
+ }
+
@Test
public void testQueryAai_AlreadyDisabled() throws AaiException {
ControlLoopEventManager mgr = null;
--- /dev/null
+# Copyright 2019 AT&T Intellectual Property. All rights reserved
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+controlLoop:
+ version: 1.0.0
+ controlLoopName: ControlLoop-vService-cbed919f-2212-4ef7-8051-fe6308da1bda
+ services:
+ - serviceName: service1
+ resources:
+ - resourceName: resource1
+ resourceType: VF
+ trigger_policy: unique-policy-id-3-migrate
+
+policies:
+ - id: unique-policy-id-3-migrate
+ name: Migrate Policy
+ description:
+ actor: APPC
+ recipe: Migrate
+ target: VM
+ retry: 0
+ timeout: 30
+ success: final_success
+ failure: final_failure
+ failure_timeout: final_failure_timeout
+ failure_retries: final_failure_retries
+ failure_exception: final_failure_exception
--- /dev/null
+# Copyright 2019 AT&T Intellectual Property. All rights reserved
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+controlLoop:
+ version: 1.0.0
+ controlLoopName: ControlLoop-vService-cbed919f-2212-4ef7-8051-fe6308da1bda
+ services:
+ - serviceName: service1
+ resources:
+ - resourceName: resource1
+ resourceType: VF
+ trigger_policy: unique-policy-id-3-migrate
+ timeout: 0
+
+policies:
+ - id: unique-policy-id-3-migrate
+ name: Migrate Policy
+ description:
+ actor: APPC
+ recipe: Migrate
+ target: VM
+ retry: 0
+ timeout: 30
+ success: final_success
+ failure: final_failure
+ failure_timeout: final_failure_timeout
+ failure_retries: final_failure_retries
+ failure_exception: final_failure_exception
//
// insert operation timeout object
//
- ControlLoopTimer opTimer = new ControlLoopTimer();
- opTimer.setTimerType("Operation");
- opTimer.setClosedLoopControlName($event.getClosedLoopControlName());
- opTimer.setRequestId($event.getRequestId().toString());
- opTimer.setDelay(operation.getOperationTimeout().toString() + "s");
+ ControlLoopTimer opTimer = new ControlLoopTimer();
+ opTimer.setTimerType("Operation");
+ opTimer.setClosedLoopControlName($event.getClosedLoopControlName());
+ opTimer.setRequestId($event.getRequestId().toString());
+ Integer timeout = operation.getOperationTimeout();
+ opTimer.setDelay(timeout > 0 ? timeout.toString() + "s" : $clTimer.getDelay());
insert(opTimer);
//
//
insert(result.getB());
} else {
- logger.debug("The target resource {} is already processing",
+ logger.debug("The target resource {} is already processing",
$event.getAai().get($event.getTarget()));
notification = new VirtualControlLoopNotification($event);
notification.setNotification(ControlLoopNotificationType.REJECTED);
opTimer.setTimerType("Operation");
opTimer.setClosedLoopControlName($event.getClosedLoopControlName());
opTimer.setRequestId($event.getRequestId().toString());
- opTimer.setDelay(operation.getOperationTimeout().toString() + "s");
+ Integer timeout = operation.getOperationTimeout();
+ opTimer.setDelay(timeout > 0 ? timeout.toString() + "s" : $clTimer.getDelay());
insert(opTimer);
//