28mm / blast-radius

Interactive visualizations of Terraform dependency graphs using d3.js
https://28mm.github.io/blast-radius-docs/
MIT License
2.07k stars 259 forks source link

Blast Radius triggers 500 response #93

Open rossayoung opened 3 years ago

rossayoung commented 3 years ago

I have been playing around with ncc/sad cloud and I wanted to visualize the data via blast-radius.
unfortunately after successfully applying the terraform init blast-radius seems to have problems viewing the TF file

steps to recreate git clone https://github.com/nccgroup/sadcloud.git cd sadcloud/sadcloud

pip3 install blastradius brew install graphviz brew install terraform

terraform init blast-radius --serve .

Output returns

sadcloud % blast-radius --serve .

StevenMonty commented 3 years ago

Similar issue here, but different illegal character:

127.0.0.1 - - [07/May/2021 00:24:38] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [07/May/2021 00:24:38] "GET /static/js/jquery.slim.min.js HTTP/1.1" 304 -
127.0.0.1 - - [07/May/2021 00:24:38] "GET /static/js/d3-tip.js HTTP/1.1" 304 -
127.0.0.1 - - [07/May/2021 00:24:38] "GET /static/js/d3.v4.js HTTP/1.1" 304 -
127.0.0.1 - - [07/May/2021 00:24:38] "GET /static/js/blast-radius.js HTTP/1.1" 304 -
127.0.0.1 - - [07/May/2021 00:24:38] "GET /static/js/bootstrap.min.js HTTP/1.1" 304 -
127.0.0.1 - - [07/May/2021 00:24:38] "GET /static/js/fontawesome-all.min.js HTTP/1.1" 304 -
127.0.0.1 - - [07/May/2021 00:24:38] "GET /static/js/categories.js HTTP/1.1" 304 -
127.0.0.1 - - [07/May/2021 00:24:38] "GET /static/js/svg-pan-zoom.js HTTP/1.1" 304 -
127.0.0.1 - - [07/May/2021 00:24:38] "GET /static/js/selectize.js HTTP/1.1" 304 -
127.0.0.1 - - [07/May/2021 00:24:41] "GET /graph.svg HTTP/1.1" 200 -
[2021-05-07 00:24:43,555] ERROR in app: Exception on /graph.json [GET]
Traceback (most recent call last):
  File "/home/smontalbano/work/martie_stripped/venv/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/smontalbano/work/martie_stripped/venv/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/smontalbano/work/martie_stripped/venv/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/smontalbano/work/martie_stripped/venv/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/smontalbano/work/martie_stripped/venv/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/smontalbano/work/martie_stripped/venv/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/smontalbano/work/martie_stripped/venv/lib/python3.8/site-packages/blastradius/server/server.py", line 61, in graph_json
    tf = Terraform(os.getcwd())
  File "/home/smontalbano/work/martie_stripped/venv/lib/python3.8/site-packages/blastradius/handlers/terraform.py", line 26, in __init__
    self.config = hcl.load(config_io)
  File "/home/smontalbano/work/martie_stripped/venv/lib/python3.8/site-packages/hcl/api.py", line 62, in load
    return loads(fp.read(), export_comments=export_comments)
  File "/home/smontalbano/work/martie_stripped/venv/lib/python3.8/site-packages/hcl/api.py", line 81, in loads
    return HclParser().parse(s, export_comments=export_comments)
  File "/home/smontalbano/work/martie_stripped/venv/lib/python3.8/site-packages/hcl/parser.py", line 642, in parse
    return self.yacc.parse(
  File "/home/smontalbano/work/martie_stripped/venv/lib/python3.8/site-packages/hcl/ply/yacc.py", line 503, in parse
    tok = self.errorfunc(errtoken)
  File "/home/smontalbano/work/martie_stripped/venv/lib/python3.8/site-packages/hcl/parser.py", line 634, in p_error
    raise ValueError(msg)
ValueError: Line 822, column 21563: unexpected RIGHTPAREN; expected PERIOD, COMMA
127.0.0.1 - - [07/May/2021 00:24:43] "GET /graph.json HTTP/1.1" 500 -
alen-z commented 3 years ago

& for me.

lkurzyniec commented 2 years ago

my callstack

...
127.0.0.1 - - [29/Aug/2022 15:18:56] "GET /static/js/selectize.js HTTP/1.1" 304 -
[2022-08-29 15:19:13,783] ERROR in app: Exception on /graph.svg [GET]
Traceback (most recent call last):
  File "/mnt/c/git/proj1/venv/lib/python3.8/site-packages/blastradius/handlers/dot.py", line 455, in _module
    return m.groupdict()['module']
AttributeError: 'NoneType' object has no attribute 'groupdict'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/mnt/c/git/proj1/venv/lib/python3.8/site-packages/flask/app.py", line 2525, in wsgi_app
    response = self.full_dispatch_request()
  File "/mnt/c/git/proj1/venv/lib/python3.8/site-packages/flask/app.py", line 1822, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/mnt/c/git/proj1/venv/lib/python3.8/site-packages/flask/app.py", line 1820, in full_dispatch_request
    rv = self.dispatch_request()
  File "/mnt/c/git/proj1/venv/lib/python3.8/site-packages/flask/app.py", line 1796, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "/mnt/c/git/proj1/venv/lib/python3.8/site-packages/blastradius/server/server.py", line 36, in graph_svg
    dot = DotGraph('', file_contents=run_tf_graph())
  File "/mnt/c/git/proj1/venv/lib/python3.8/site-packages/blastradius/handlers/dot.py", line 54, in __init__
    self.nodes.append(DotNode(e.source))
  File "/mnt/c/git/proj1/venv/lib/python3.8/site-packages/blastradius/handlers/dot.py", line 415, in __init__
    self.module         = DotNode._module(self.label) # for module groupings. 'root' or 'module.foo.module.bar'
  File "/mnt/c/git/proj1/venv/lib/python3.8/site-packages/blastradius/handlers/dot.py", line 457, in _module
    raise Exception("None: ", label)
Exception: ('None: ', '[root] module.admin_group_owner_parent_group_assignment (close)')
127.0.0.1 - - [29/Aug/2022 15:19:13] "GET /graph.svg HTTP/1.1" 500 -
Ianyliu commented 2 years ago

If any of you want, you can try my version of Blast Radius using pip:

python3 -m pip install git+https://github.com/Ianyliu/blast-radius-fork

Or Docker:

docker run --rm -it -p 5000:5000 \ -v $(pwd):/data:ro \ --security-opt apparmor:unconfined \ --cap-add=SYS_ADMIN \ ianyliu/blast-radius-fork

I believe I solved that problem...