host: {{attack_host}}
monitor_time: 30
monitor_number: 3
- sla:
- max_recover_time: 30
nodes:
{{attack_host}}: {{attack_host}}.LF
host: {{attack_host}}
monitor_time: 30
monitor_number: 3
- sla:
- max_recover_time: 30
nodes:
{{attack_host}}: {{attack_host}}.LF
host: {{attack_host}}
monitor_time: 30
monitor_number: 3
- sla:
- max_recover_time: 30
nodes:
{{attack_host}}: {{attack_host}}.LF
host: {{attack_host}}
monitor_time: 30
monitor_number: 3
- sla:
- max_recover_time: 30
nodes:
{{attack_host}}: {{attack_host}}.LF
host: {{attack_host}}
monitor_time: 30
monitor_number: 3
- sla:
- max_recover_time: 30
nodes:
{{attack_host}}: {{attack_host}}.LF
host: {{attack_host}}
monitor_time: 30
monitor_number: 3
- sla:
- max_recover_time: 30
-
monitor_type: "openstack-cmd"
process_name: "{{ attack_process }}"
host: {{attack_host}}
monitor_time: 30
- sla:
- max_recover_time: 30
nodes:
{{attack_host}}: {{attack_host}}.LF
host: {{attack_host}}
key: "monitor-recovery"
monitor_time: 30
- sla:
- max_recover_time: 30
-
monitor_type: "general-monitor"
host: {{attack_host}}
monitor_time: 30
monitor_number: 3
- sla:
- max_recover_time: 30
operations:
-
host: {{attack_host}}
monitor_time: 30
monitor_number: 3
- sla:
- max_recover_time: 30
operations:
-
host: {{attack_host}}
monitor_time: {{monitor_time}}
monitor_number: 3
- sla:
- max_recover_time: 30
nodes:
{{attack_host}}: {{attack_host}}.LF
host: {{attack_host}}
monitor_time: 30
monitor_number: 3
- sla:
- max_recover_time: 30
nodes:
{{attack_host}}: {{attack_host}}.LF
outage_time = (
last_outage - first_outage if last_outage > first_outage else 0
)
+ self._result = {"outage_time": outage_time}
LOG.debug("outage_time is: %f", outage_time)
max_outage_time = 0
- if "max_outage_time" in self._config["sla"]:
- max_outage_time = self._config["sla"]["max_outage_time"]
- elif "max_recover_time" in self._config["sla"]:
- max_outage_time = self._config["sla"]["max_recover_time"]
- else:
- raise RuntimeError("'max_outage_time' or 'max_recover_time' "
- "config is not found")
- self._result = {"outage_time": outage_time}
-
- if outage_time > max_outage_time:
- LOG.error("SLA failure: %f > %f", outage_time, max_outage_time)
- return False
- else:
- return True
+ if self._config.get("sla"):
+ if "max_outage_time" in self._config["sla"]:
+ max_outage_time = self._config["sla"]["max_outage_time"]
+ elif "max_recover_time" in self._config["sla"]:
+ max_outage_time = self._config["sla"]["max_recover_time"]
+ else:
+ raise RuntimeError("'max_outage_time' or 'max_recover_time' "
+ "config is not found")
+ if outage_time > max_outage_time:
+ LOG.error("SLA failure: %f > %f", outage_time, max_outage_time)
+ return False
+ return True
def verify_SLA(self):
outage_time = self._result.get('outage_time', None)
- max_outage_time = self._config["sla"]["max_recover_time"]
- if outage_time > max_outage_time:
- LOG.info("SLA failure: %f > %f", outage_time, max_outage_time)
- return False
- else:
- return True
+ if self._config.get("sla"):
+ max_outage_time = self._config["sla"]["max_recover_time"]
+ if outage_time > max_outage_time:
+ LOG.info("SLA failure: %f > %f", outage_time, max_outage_time)
+ return False
+ return True
def _test(): # pragma: no cover
ins.start_monitor()
ins.wait_monitor()
ins.verify_SLA()
+
+ def test__monitor_multi_no_sla(self, mock_open, mock_ssh):
+ monitor_cfg = {
+ 'monitor_type': 'general-monitor',
+ 'monitor_number': 3,
+ 'key': 'service-status',
+ 'monitor_key': 'service-status',
+ 'host': 'node1',
+ 'monitor_time': 0.1,
+ 'parameter': {'serviceName': 'haproxy'}
+ }
+ ins = monitor_multi.MultiMonitor(
+ monitor_cfg, self.context, {"nova-api": 10})
+ mock_ssh.SSH.from_node().execute.return_value = (0, "running", '')
+ ins.start_monitor()
+ ins.wait_monitor()
+ self.assertTrue(ins.verify_SLA())
ins.monitor_func()
ins._result = {"outage_time": 10}
ins.verify_SLA()
+
+ def test__monitor_process_no_sla(self, mock_ssh):
+
+ monitor_cfg = {
+ 'monitor_type': 'process',
+ 'process_name': 'nova-api',
+ 'host': "node1",
+ 'monitor_time': 1,
+ }
+ ins = monitor_process.MonitorProcess(monitor_cfg, self.context, {"nova-api": 10})
+
+ mock_ssh.SSH.from_node().execute.return_value = (0, "0", '')
+ ins.setup()
+ ins.monitor_func()
+ ins._result = {"outage_time": 10}
+ self.assertTrue(ins.verify_SLA())