def _create_event_triggers(self):
        triggers = self._config["triggers"]
        sup_tr = triggers["support"]
        user_support = ev.Trigger(
            prob_check=pck.ProbCheck(sup_tr["get_called"]),
            node_check=dck.AnyDepCheck(dck.NeqCheck("run")),
            event_builder=ev.EventBuilder(
                "User complained for poor web service"))
        webs1 = ev.Trigger(
            node_check=dck.OrCheck(
                dck.EqCheck("stop"), dck.DepCheck(dck.EqCheck("off")),
                dck.DepCheck(dck.DepCheck(dck.EqCheck("off")))),
            prob_check=pck.NoProbCheck(),
            event_builder=ev.EventBuilder("Application is down"))
        webs2 = ev.Trigger(
            node_check=dck.EqCheck("slow"),
            prob_check=pck.NoProbCheck(),
            event_builder=ev.EventBuilder("Application is slow"))
        host = ev.Trigger(
            node_check=dck.OrCheck(dck.EqCheck("off"),
                                   dck.DepCheck(dck.EqCheck("off"))),
            prob_check=pck.NoProbCheck(),
            event_builder=ev.EventBuilder("Host is unreachable or down"))
        switch = ev.Trigger(
            node_check=dck.EqCheck("off"),
            prob_check=pck.NoProbCheck(),
            event_builder=ev.EventBuilder("Switch is unreachable or down"))

        return {
            "switch": switch,
            "host": host,
            "web_service": [webs1, webs2],
            "support": user_support
        }
    def _create_system(self):
        mc = tr.MarkovChain([])
        vm_triggers = [
            ev.Trigger(
                event_builder=MonascaFakeMetricBuilder("vm.mem.used_mb"),
                node_check=dck.TrueCheck(),
                prob_check=pck.NoProbCheck()),
            ev.Trigger(event_builder=MonascaFakeMetricBuilder("cpu.idle_perc"),
                       node_check=dck.TrueCheck(),
                       prob_check=pck.NoProbCheck()),
            ev.Trigger(event_builder=MonascaFakeMetricBuilder(
                "cpu.total_logical_cores"),
                       node_check=dck.TrueCheck(),
                       prob_check=pck.NoProbCheck())
        ]
        host_trigger = ev.Trigger(
            event_builder=MonascaFakeMetricBuilder("mem.total_mb"),
            node_check=dck.TrueCheck(),
            prob_check=pck.NoProbCheck())

        return [
            # vm.mem.used_mb
            base.StateNode(3, mc, vm_triggers[0], _id="vm1"),
            base.StateNode(1, mc, vm_triggers[0], _id="vm2"),
            # cpu.idle_perc
            base.StateNode(0.75, mc, vm_triggers[1], _id="vm1"),
            base.StateNode(0.75, mc, vm_triggers[1], _id="vm2"),
            # cpu.total_logical_cores
            base.StateNode(3, mc, vm_triggers[2], _id="vm1"),
            base.StateNode(2, mc, vm_triggers[2], _id="vm2"),
            # mem.total_mb
            base.StateNode(5, mc, host_trigger, _id="host1"),
            base.StateNode(6, mc, host_trigger, _id="host2"),
        ]
Пример #3
0
    def _create_trigger(self, prob, state, event_msg):
        """Aux function to create an event trigger

        :param prob: float between 0 and 1 -- probability of the event
        being triggered
        :param state: str -- State where this event can be triggered
        :param event_msg: str -- message that will be sent for this event
        """
        return events.Trigger(prob_check=pck.ProbCheck(prob),
                              node_check=dck.EqCheck(state),
                              event_builder=events.EventBuilder(event_msg))
Пример #4
0
 def test_collect_events_should_be_populated_by_trigger(self):
     some_trigger = ev.Trigger(
         node_check=dck.EqCheck(0),
         prob_check=pck.NoProbCheck(),
         event_builder=ev.EventBuilder("test")
     )
     node = base.StateNode(0, None, some_trigger)
     events = []
     node.collect_events(1, datetime.datetime.now(),
                         markov_mocks.MockRequestBuilder(events))
     self.assertTrue(len(events) == 1)
     self.assertEqual(events[0]["event"].msg, "test", "a")
 def test_trigger_should_create_event_when_necessary(self):
     some_trigger = ev.Trigger(node_check=dck.EqCheck(0),
                               prob_check=pck.NoProbCheck(),
                               event_builder=ev.EventBuilder(""))
     events = []
     some_trigger.apply_on(DummyState(), 1, datetime.datetime.now(),
                           markov_mocks.MockRequestBuilder(events))
     self.assertEqual(len(events), 1)
     events = []
     some_trigger.apply_on(DummyState(1), 1, datetime.datetime.now(),
                           markov_mocks.MockRequestBuilder(events))
     self.assertEqual(len(events), 0)