app-sre/qontract-reconcile

Handle exception when GraphQL server is not running

aditya-konarde opened this issue · 1 comments

Currently if you try to run qontract-reconcile without having the graphql server running, it'll throw an exception.

Proposal: Handle this gracefully, return a clean message

~/Git/qontract-reconcile ⑂master* $ qontract-reconcile --config=config.local.toml --dry-run openshift-resources

Traceback (most recent call last):
  File "/home/akonarde/Git/qontract-reconcile/venv/bin/qontract-reconcile", line 11, in <module>
    load_entry_point('reconcile', 'console_scripts', 'qontract-reconcile')()
  File "/home/akonarde/Git/qontract-reconcile/venv/lib/python2.7/site-packages/Click-7.0-py2.7.egg/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/home/akonarde/Git/qontract-reconcile/venv/lib/python2.7/site-packages/Click-7.0-py2.7.egg/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/home/akonarde/Git/qontract-reconcile/venv/lib/python2.7/site-packages/Click-7.0-py2.7.egg/click/core.py", line 1137, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/akonarde/Git/qontract-reconcile/venv/lib/python2.7/site-packages/Click-7.0-py2.7.egg/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/akonarde/Git/qontract-reconcile/venv/lib/python2.7/site-packages/Click-7.0-py2.7.egg/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/akonarde/Git/qontract-reconcile/venv/lib/python2.7/site-packages/Click-7.0-py2.7.egg/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/akonarde/Git/qontract-reconcile/reconcile/cli.py", line 159, in openshift_resources
    ctx.obj['dry_run'], thread_pool_size)
  File "/home/akonarde/Git/qontract-reconcile/reconcile/cli.py", line 65, in run_integration
    func(*args)
  File "/home/akonarde/Git/qontract-reconcile/reconcile/openshift_resources.py", line 507, in run
    namespaces_query = gqlapi.query(NAMESPACES_QUERY)['namespaces']
  File "/home/akonarde/Git/qontract-reconcile/utils/gql.py", line 24, in query
    result_json = self.client.execute(query, variables)
  File "/home/akonarde/Git/qontract-reconcile/venv/lib/python2.7/site-packages/graphqlclient-0.2.4-py2.7.egg/graphqlclient/client.py", line 11, in execute
    return self._send(query, variables)
  File "/home/akonarde/Git/qontract-reconcile/venv/lib/python2.7/site-packages/graphqlclient-0.2.4-py2.7.egg/graphqlclient/client.py", line 29, in _send
    response = urllib.request.urlopen(req)
  File "/usr/lib64/python2.7/urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib64/python2.7/urllib2.py", line 429, in open
    response = self._open(req, data)
  File "/usr/lib64/python2.7/urllib2.py", line 447, in _open
    '_open', req)
  File "/usr/lib64/python2.7/urllib2.py", line 407, in _call_chain
    result = func(*args)
  File "/usr/lib64/python2.7/urllib2.py", line 1230, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "/usr/lib64/python2.7/urllib2.py", line 1200, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [Errno 111] Connection refused>