Beispiel #1
0
def run_commands(name, **kwargs):
    from tsuru.stream import Stream
    config = load_config(**kwargs)
    watcher = kwargs.get("watcher")
    parts = name.split(":")
    cmds = config.get("hooks", {})
    for part in parts:
        cmds = cmds.get(part, {})
    if cmds:
        Stream(watcher_name=watcher.name)({
            "data":
            " ---> Running {}".format(name)
        })
    for command in cmds:
        try:
            commands = ["/bin/bash", "-c"]
            cmd = "source /home/application/apprc && {}"
            commands.append(cmd.format(command))
            result = subprocess.check_output(commands,
                                             stderr=subprocess.STDOUT,
                                             cwd=watcher.working_dir,
                                             preexec_fn=set_uid(watcher))
            Stream(watcher_name=watcher.name)({"data": result})
        except subprocess.CalledProcessError as e:
            Stream(watcher_name=watcher.name)({"data": str(e)})
            Stream(watcher_name=watcher.name)({"data": e.output})
    return True
 def test_should_slience_errors_when_envs_does_not_exist(lenvs, self):
     lenvs.return_value = {}
     try:
         stream = Stream()
         stream(self.data)
     except Exception as e:
         msg = "Should not fail when envs does not exist. " \
               "Exception: {}".format(e)
         self.fail(msg)
Beispiel #3
0
 def setUp(self, gethostname):
     gethostname.return_value = "myhost"
     l_out = '2012-11-06 17:13:55 [12019] [INFO] Starting gunicorn 0.15.0\n'
     l_err = '2012-11-06 17:13:55 [12019] [ERROR] Error starting gunicorn\n'
     self.data = {}
     self.data['stderr'] = {'pid': 12018, 'data': l_err, 'name': 'stderr'}
     self.data['stdout'] = {'pid': 12018, 'data': l_out, 'name': 'stdout'}
     self.stream = Stream(watcher_name='mywatcher')
     self.stream.apprc = os.path.join(os.path.dirname(__file__),
                                      "testdata/apprc")
Beispiel #4
0
 def test_timeout_is_configurable(self, post, gethostname):
     post.return_value = mock.Mock(status_code=200)
     gethostname.return_value = "myhost"
     stream = Stream(watcher_name="watcher", timeout=10)
     stream.apprc = os.path.join(os.path.dirname(__file__),
                                 "testdata/apprc")
     stream(self.data['stdout'])
     (appname, host, token, syslog_server, syslog_port, syslog_facility,
      syslog_socket) = self.stream.load_envs()
     url = "{0}/apps/{1}/log?source=watcher&unit=myhost".format(
         host, appname)
     expected_msg = "Starting gunicorn 0.15.0\n"
     expected_data = json.dumps([expected_msg])
     post.assert_called_with(url,
                             data=expected_data,
                             headers={"Authorization": "bearer " + token},
                             timeout=10)
 def setUp(self):
     l = '2012-11-06 17:13:55 [12019] [INFO] Starting gunicorn 0.15.0\n'
     self.data = {'pid': 12018, 'data': l, 'name': 'stderr'}
     self.stream = Stream(watcher_name='mywatcher')
     self.stream.apprc = os.path.join(os.path.dirname(__file__),
                                      "testdata/apprc")