예제 #1
0
 def node_services(approot, scan_dir):
     """Setup a node services monitor enforcing restart policies.
     """
     tm_env = appenv.AppEnvironment(root=approot)
     mon = monitor.Monitor(scan_dirs=scan_dir,
                           service_dirs=None,
                           policy_impl=monitor.MonitorRestartPolicy,
                           down_action=monitor.MonitorNodeDown(tm_env))
     mon.run()
예제 #2
0
    def cleaning(approot, scan_dir):
        """Setup a monitor for the running containers.
        """
        tm_env = appenv.AppEnvironment(root=approot)

        def _policy_factory():
            return monitor.CleanupMonitorRestartPolicy(tm_env)

        mon = monitor.Monitor(scan_dirs=scan_dir,
                              service_dirs=None,
                              policy_impl=_policy_factory,
                              down_action=monitor.MonitorNodeDown(
                                  tm_env, prefix='cleanup-'))
        mon.run()
예제 #3
0
    def test_execute(self):
        """Test shutting down of the node.
        """
        mock_tm_env_class = namedtuple('MockTMEnv', ['watchdog_dir'])
        mock_tm_env = mock_tm_env_class(self.root)
        mock_down_action = monitor.MonitorNodeDown(mock_tm_env)

        res = mock_down_action.execute({
            'service': 'mock_service',
            'return_code': 42,
            'signal': 9,
        })

        # This MonitorDownAction stops the monitor.
        self.assertEqual(res, True)
        self.assertTrue(
            os.path.exists(os.path.join(self.root, 'Monitor-mock_service')))