ansible / eda-server-prototype

Apache License 2.0
33 stars 14 forks source link

Rulebook Activation fails #236

Closed rndmh3ro closed 1 year ago

rndmh3ro commented 1 year ago

I'm running the docker-compose setup.

I created a rulebook activation via the GUI. The API-response for the activation is this:

  {
    "name": "test5",
    "rulebook_id": 14,
    "inventory_id": 3,
    "extra_var_id": 4,
    "working_directory": "/tmp",
    "execution_environment": "alpine:latest",
    "project_id": 4,
    "id": 11
  }

When saving the activation, the logs ouput this:

eda-postgres           | 2022-11-03 17:09:47.938 UTC:client backend:[2420]: LOG:  execute __asyncpg_stmt_70__: INSERT INTO activation_instance (name, rulebook_id, inventory_id, extra_var_id, working_directory, exe
cution_environment, project_id) VALUES ($1::varchar, $2::integer, $3::integer, $4::integer, $5::varchar, $6::varchar, $7::integer) RETURNING activation_instance.id, activation_instance.large_data_id
eda-postgres           | 2022-11-03 17:09:47.938 UTC:client backend:[2420]: DETAIL:  parameters: $1 = 'test5', $2 = '14', $3 = '3', $4 = '4', $5 = '/tmp', $6 = 'alpine:latest', $7 = '4'
eda-server             | [1] 2022-11-03 17:09:48,016 ERROR    Failed to start container: DockerError(900, 'Cannot connect to Docker Engine via unix:///run/docker.sock [Cannot connect to unix socket /run/docker.soc
k ssl:default [Permission denied]]')
eda-server             | [1] 2022-11-03 17:09:48,019 INFO     192.168.199.33:33316 - "POST /api/activation_instance HTTP/1.0" 500 Internal Server Error
eda-frontend           | 192.168.199.33 - - [03/Nov/2022:17:09:48 +0000] "POST /api/activation_instance HTTP/1.1" 500 21 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0" "-"
eda-server             | [1] 2022-11-03 17:09:48,021 ERROR    Exception in ASGI application
eda-server             | Traceback (most recent call last):
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/aiohttp/connector.py", line 1378, in _create_connection
eda-server             |     _, proto = await self._loop.create_unix_connection(
eda-server             |   File "/usr/lib64/python3.9/asyncio/unix_events.py", line 244, in create_unix_connection
eda-server             |     await self.sock_connect(sock, path)
eda-server             |   File "/usr/lib64/python3.9/asyncio/selector_events.py", line 502, in sock_connect
eda-server             |     return await fut
eda-server             |   File "/usr/lib64/python3.9/asyncio/selector_events.py", line 507, in _sock_connect
eda-server             |     sock.connect(address)
eda-server             | PermissionError: [Errno 13] Permission denied
eda-server             |
eda-server             | The above exception was the direct cause of the following exception:
eda-server             |
eda-server             | Traceback (most recent call last):
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/aiodocker/docker.py", line 248, in _do_query
eda-server             |     response = await self.session.request(
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/aiohttp/client.py", line 536, in _request
eda-server             |     conn = await self._connector.connect(
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/aiohttp/connector.py", line 540, in connect
eda-server             |     proto = await self._create_connection(req, traces, timeout)
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/aiohttp/connector.py", line 1384, in _create_connection
eda-server             |     raise UnixClientConnectorError(self.path, req.connection_key, exc) from exc
eda-server             | aiohttp.client_exceptions.UnixClientConnectorError: Cannot connect to unix socket /run/docker.sock ssl:default [Permission denied]
eda-server             |
eda-server             | During handling of the above exception, another exception occurred:
eda-server             |
eda-server             | Traceback (most recent call last):
eda-server             |   File "/opt/app-root/src/src/eda_server/ruleset.py", line 123, in activate_rulesets
eda-server             |     await aiodocker.images.DockerImages(docker).pull(
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/aiodocker/images.py", line 133, in _handle_list
eda-server             |     async with cm as response:
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/aiodocker/utils.py", line 309, in __aenter__
eda-server             |     resp = await self._coro
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/aiodocker/docker.py", line 240, in _do_query
eda-server             |     await self._check_version()                                                                                                                                                     [0/7105]
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/aiodocker/docker.py", line 192, in _check_version
eda-server             |     ver = await self._query_json("version", versioned_api=False)
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/aiodocker/docker.py", line 300, in _query_json
eda-server             |     async with self._query(
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/aiodocker/utils.py", line 309, in __aenter__
eda-server             |     resp = await self._coro
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/aiodocker/docker.py", line 261, in _do_query
eda-server             |     raise DockerError(
eda-server             | aiodocker.exceptions.DockerError: DockerError(900, 'Cannot connect to Docker Engine via unix:///run/docker.sock [Cannot connect to unix socket /run/docker.sock ssl:default [Permission deni
ed]]')
eda-server             |
eda-server             | During handling of the above exception, another exception occurred:
eda-server             |
eda-server             | Traceback (most recent call last):
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/uvicorn/protocols/http/h11_impl.py", line 407, in run_asgi
eda-server             |     result = await app(  # type: ignore[func-returns-value]
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/uvicorn/middleware/proxy_headers.py", line 78, in __call__
eda-server             |     return await self.app(scope, receive, send)
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/fastapi/applications.py", line 270, in __call__
eda-server             |     await super().__call__(scope, receive, send)
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/starlette/applications.py", line 124, in __call__
eda-server             |     await self.middleware_stack(scope, receive, send)
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/starlette/middleware/errors.py", line 184, in __call__
eda-server             |     raise exc
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/starlette/middleware/errors.py", line 162, in __call__
eda-server             |     await self.app(scope, receive, _send)
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/starlette/middleware/cors.py", line 92, in __call__
eda-server             |     await self.simple_response(scope, receive, send, request_headers=headers)
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/starlette/middleware/cors.py", line 147, in simple_response
eda-server             |     await self.app(scope, receive, send)
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/starlette/middleware/exceptions.py", line 75, in __call__
eda-server             |     raise exc
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/starlette/middleware/exceptions.py", line 64, in __call__
eda-server             |     await self.app(scope, receive, sender)
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 21, in __call__
eda-server             |     raise e
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
eda-server             |     await self.app(scope, receive, send)
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/starlette/routing.py", line 680, in __call__
eda-server             |     await route.handle(scope, receive, send)
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/starlette/routing.py", line 275, in handle
eda-server             |     await self.app(scope, receive, send)
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/starlette/routing.py", line 65, in app
eda-server             |     response = await func(request)
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/fastapi/routing.py", line 231, in app
eda-server             |     raw_response = await run_endpoint_function(
eda-server             |   File "/opt/app-root/lib64/python3.9/site-packages/fastapi/routing.py", line 160, in run_endpoint_function
eda-server             |     return await dependant.call(**values)
eda-server             |   File "/opt/app-root/src/src/eda_server/api/activation.py", line 309, in create_activation_instance
eda-server             |     await activate_rulesets(
eda-server             |   File "/opt/app-root/src/src/eda_server/ruleset.py", line 156, in activate_rulesets
eda-server             |     await container.delete()
eda-server             | UnboundLocalError: local variable 'container' referenced before assignment
eda-server             | [1] 2022-11-03 17:09:48,136 INFO     192.168.199.33:33324 - "GET /api/activation_instances HTTP/1.0" 200 OK
eda-frontend           | 192.168.199.33 - - [03/Nov/2022:17:09:48 +0000] "GET /api/activation_instances HTTP/1.1" 200 759 "http://localhost:8080/eda/activations" "Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20

It seems the container wants to be started but it's not working because of missing permissions. Is this supposed to work?

Dostonbek1 commented 1 year ago

@rndmh3ro The value for execution_environment should be a full URL link to an existing image, e.g. quay.io/aizquier/eda-server:latest

rndmh3ro commented 1 year ago

Thanks!