UBCSailbot / sailbot_workspace

UBC Sailbot's monorepo
https://ubcsailbot.github.io/sailbot_workspace/main/
Apache License 2.0
5 stars 1 forks source link

Update deployment container script #396

Closed patrick-5546 closed 3 months ago

patrick-5546 commented 4 months ago

Description

To Do

Verification

@SPDonaghy can try the following steps?

SPDonaghy commented 4 months ago

Just checking in, I can get to this today or tomorrow most likely

SPDonaghy commented 4 months ago

Ran sudo ./setup.sh and then tried to run sudo ./build.sh and got this error

[0.257s] WARNING:colcon.colcon_core.package_discovery:ignoring unknown package 'virtual_iridium' in --packages-ignore

Summary: 0 packages finished [0.17s]

Any thoughts?

test.sh failed right away and asked if the packages had been built yet.

SPDonaghy commented 4 months ago

Also:

ros@63d48b306fe4:/workspaces/sailbot_workspace$ echo $ROS_DISTRO
humble

but now when I run sudo ./scripts/setup.sh I get

rosdep: error: --rosdistro option requires 1 argument

patrick-5546 commented 4 months ago

Run the scripts without sudo. Sudo runs scripts as the root user instead of the ros user

SPDonaghy commented 4 months ago

Ah okay. I tried sudo since I was getting permission denied for everything. Maybe I need to run chmod?

patrick-5546 commented 4 months ago

What is the output of ls -l when you are inside the container? I'm suspecting that you're encountering the same error as the CI did, but for some reason it does not happen on my machine.

If that's the case, running ./scripts/run-tests.sh should work because it starts by changing the permissions of all the files to the ros user. I also specified the ros user in the docker compose file, but since it didn't work for CI I don't think it will make a difference for you

Also I see you checked off the second point, that means you were able to get to the point that the global launch file was running when not running interactively?

SPDonaghy commented 4 months ago

This is the output before trying anything else image

My mistake, no the global launch file does not run, same permission denied problem. will try ./scripts/run-test.sh and if that doesnt work I'll try pulling your change and try again.

SPDonaghy commented 4 months ago

If the permissions of the files are transferred to the ros user then don't the commands to execute the bash scripts have to be entered inside the workspace container?

patrick-5546 commented 4 months ago

Try running this in WSL/Ubuntu

./scripts/deployment/start_containers.sh --website --interactive

Then in prompt (inside the sailbot workspace container) run

`./scripts/run-tests.sh

I am also surprised that running it without the interactive flag doesn't work. If the above commands don't work then we should hop on a call to debug it faster

SPDonaghy commented 3 months ago

Try running this in WSL/Ubuntu

./scripts/deployment/start_containers.sh --website --interactive

Then in prompt (inside the sailbot workspace container) run

`./scripts/run-tests.sh

I am also surprised that running it without the interactive flag doesn't work. If the above commands don't work then we should hop on a call to debug it faster

Okay so both of these do work, running from WSL

SPDonaghy commented 3 months ago

Running without interactive flag, from WSL, works. Navigate and Local Transceiver nodes fail.

LT

image

Navigate

image

SPDonaghy commented 3 months ago

./scripts/deployment/start_containers.sh --website fails without internet connection.

image

patrick-5546 commented 3 months ago

Navigate and Local Transceiver nodes fail

Do these fail when launching the global launch file in sailbot workspace? If so, not a problem with this workflow.

./scripts/deployment/start_containers.sh --website fails without internet connection

Did you run once with internet before? And do you have wget installed?

SPDonaghy commented 3 months ago

Do these fail when launching the global launch file in sailbot workspace? If so, not a problem with this workflow.

Yes they do, so no worries there.

Did you run once with internet before? And do you have wget installed?

Yup

I tried changing --pull never to pull missing and also removing pull altogether. I'm guessing its default behavior for docker to make a request for image metadata despite the image already being locally cached.

I found a work around here but its not ideal and it involves changing the Dockerfile.

It seems like this is an issue with buildkit. I tried disabling it and running again but then rosdep complains about not being connected to the internet further down the line, but the containers start at least.

sean@LAPTOP-J5KA2EOT:~/test-workspace/sailbot_workspace$ ./scripts/deployment/start_containers.sh --website
Sending build context to Docker daemon  8.467kB
Step 1/7 : FROM ghcr.io/ubcsailbot/sailbot_workspace/dev:moved-network-deps
 ---> 9deff1065b14
Step 2/7 : ARG USERNAME=ros
 ---> Running in 87a3338ec5de
Removing intermediate container 87a3338ec5de
 ---> 2fe928e3a87e
Step 3/7 : ARG HOME=/home/${USERNAME}
 ---> Running in ceec618eb6cd
Removing intermediate container ceec618eb6cd
 ---> 4050b4978bf2
Step 4/7 : COPY --chown=${USERNAME}:${USERNAME} config ${HOME}
 ---> 2133c28bf621
Step 5/7 : USER ${USERNAME}
 ---> Running in e187e7c4355d
Removing intermediate container e187e7c4355d
 ---> 11e104c89109
Step 6/7 : WORKDIR ${ROS_WORKSPACE}
 ---> Running in 8449a07c8569
Removing intermediate container 8449a07c8569
 ---> 146d84716f8d
Step 7/7 : LABEL com.docker.compose.image.builder=classic
 ---> Running in 0fe5c17606c1
Removing intermediate container 0fe5c17606c1
 ---> af8c127c3aad
Successfully built af8c127c3aad
Successfully tagged deployment-sailbot-workspace:latest
Sending build context to Docker daemon  99.27MB
Step 1/5 : FROM node:20-alpine
 ---> 91247b4bc29d
Step 2/5 : WORKDIR /website
 ---> Running in 65e228180748
Removing intermediate container 65e228180748
 ---> 211a69817ca1
Step 3/5 : EXPOSE 3005
 ---> Running in 1c638c8bdb09
Removing intermediate container 1c638c8bdb09
 ---> c79fb303a694
Step 4/5 : CMD npm install && npm run build && npm run start
 ---> Running in 2fdc366a512a
Removing intermediate container 2fdc366a512a
 ---> 0cc9817e894f
Step 5/5 : LABEL com.docker.compose.image.builder=classic
 ---> Running in 2add8cdf3acd
Removing intermediate container 2add8cdf3acd
 ---> dab9689c4ce1
Successfully built dab9689c4ce1
Successfully tagged deployment-website:latest
[+] Running 3/3
 ✔ Container deployment-sailbot-workspace-1  Started                                                               1.1s
 ✔ Container deployment-website-1            Started                                                               0.3s
 ✔ Container deployment-mongodb-1            Started                                                               0.3s
Adding /workspaces/sailbot_workspace/src/integration_tests/custom-rosdep.yaml to /etc/ros/rosdep/sources.list.d/20-sailbot.list
Ign:1 http://security.ubuntu.com/ubuntu jammy-security InRelease
Ign:2 http://packages.ros.org/ros2/ubuntu jammy InRelease
Ign:3 http://archive.ubuntu.com/ubuntu jammy InRelease
Ign:4 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
Ign:5 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Ign:6 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease
Ign:3 http://archive.ubuntu.com/ubuntu jammy InRelease
Ign:4 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
Ign:5 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Ign:1 http://security.ubuntu.com/ubuntu jammy-security InRelease
Ign:2 http://packages.ros.org/ros2/ubuntu jammy InRelease
Ign:6 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease
Ign:3 http://archive.ubuntu.com/ubuntu jammy InRelease
Ign:4 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
Ign:5 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Ign:1 http://security.ubuntu.com/ubuntu jammy-security InRelease
Ign:2 http://packages.ros.org/ros2/ubuntu jammy InRelease
Ign:6 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease
Err:3 http://archive.ubuntu.com/ubuntu jammy InRelease
  Could not resolve 'archive.ubuntu.com'
Err:4 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
  Could not resolve 'archive.ubuntu.com'
Err:5 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
  Could not resolve 'archive.ubuntu.com'
Err:1 http://security.ubuntu.com/ubuntu jammy-security InRelease
  Could not resolve 'security.ubuntu.com'
Err:6 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease
  Could not resolve 'repo.mongodb.org'
Err:2 http://packages.ros.org/ros2/ubuntu jammy InRelease
  Could not resolve 'packages.ros.org'
Reading package lists...
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/jammy/InRelease  Could not resolve 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/jammy-updates/InRelease  Could not resolve 'archive.ubuntu.com'
W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/jammy-backports/InRelease  Could not resolve 'archive.ubuntu.com'
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/jammy-security/InRelease  Could not resolve 'security.ubuntu.com'
W: Failed to fetch http://repo.mongodb.org/apt/ubuntu/dists/jammy/mongodb-org/6.0/InRelease  Could not resolve 'repo.mongodb.org'
W: Failed to fetch http://packages.ros.org/ros2/ubuntu/dists/jammy/InRelease  Could not resolve 'packages.ros.org'
W: Some index files failed to download. They have been ignored, or old ones used instead.

ERROR: your rosdep installation has not been initialized yet.  Please run:

    rosdep update

[+] Stopping 3/3
 ✔ Container deployment-mongodb-1            Stopped                                                               0.1s
 ✔ Container deployment-website-1            Stopped                                                              10.1s
 ✔ Container deployment-sailbot-workspace-1  Stopped                                                              10.4s
sean@LAPTOP-J5KA2EOT:~/test-workspace/sailbot_workspace$
patrick-5546 commented 3 months ago

Running the global launch file without internet works on my computer. Maybe it's a version issue?

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.4 LTS
Release:        22.04
Codename:       jammy

$ docker --version
Docker version 26.1.4, build 5650f9b

$ docker compose version
Docker Compose version v2.27.1-desktop.1

$ wget --version
GNU Wget 1.21.2 built on linux-gnu.
My logs ```console $ ./scripts/deployment/start_containers.sh --website [+] Building 0.7s (14/14) FINISHED docker:default => [sailbot-workspace internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 857B 0.0s => [sailbot-workspace internal] load metadata for ghcr.io/ubcsailbot/sailbot_workspace/dev:moved-network-deps 0.0s => [sailbot-workspace internal] load .dockerignore 0.0s => => transferring context: 57B 0.0s => [sailbot-workspace internal] load build context 0.0s => => transferring context: 143B 0.0s => [sailbot-workspace 1/3] FROM ghcr.io/ubcsailbot/sailbot_workspace/dev:moved-network-deps 0.0s => CACHED [sailbot-workspace 2/3] COPY --chown=ros:ros config /home/ros 0.0s => CACHED [sailbot-workspace 3/3] WORKDIR /workspaces/sailbot_workspace 0.0s => [sailbot-workspace] exporting to image 0.0s => => exporting layers 0.0s => => writing image sha256:0b59fe62f19a35e9ca3b8f217c9af2eded924833a862d4bf6648922c92efb5b2 0.0s => => naming to docker.io/library/deployment-sailbot-workspace 0.0s => [website internal] load build definition from website.Dockerfile.prod 0.0s => => transferring dockerfile: 813B 0.0s => [website internal] load metadata for docker.io/library/node:20-alpine 0.0s => [website internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [website 1/2] FROM docker.io/library/node:20-alpine 0.0s => CACHED [website 2/2] WORKDIR /website 0.0s => [website] exporting to image 0.0s => => exporting layers 0.0s => => writing image sha256:90989f66e12db12b4223db1a68bb6b84ad4b34335782e2c221c2bdaca0eeee3e 0.0s => => naming to docker.io/library/deployment-website 0.0s [+] Running 3/3 ✔ Container deployment-sailbot-workspace-1 Started 0.4s ✔ Container deployment-website-1 Started 0.6s ✔ Container deployment-mongodb-1 Started 0.6s Adding /workspaces/sailbot_workspace/src/integration_tests/custom-rosdep.yaml to /etc/ros/rosdep/sources.list.d/20-sailbot.list Ign:1 http://archive.ubuntu.com/ubuntu jammy InRelease Ign:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease Ign:3 http://archive.ubuntu.com/ubuntu jammy-backports InRelease Ign:4 http://packages.ros.org/ros2/ubuntu jammy InRelease Ign:5 http://security.ubuntu.com/ubuntu jammy-security InRelease Ign:6 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease Ign:1 http://archive.ubuntu.com/ubuntu jammy InRelease Ign:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease Ign:4 http://packages.ros.org/ros2/ubuntu jammy InRelease Ign:3 http://archive.ubuntu.com/ubuntu jammy-backports InRelease Ign:5 http://security.ubuntu.com/ubuntu jammy-security InRelease Ign:6 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease Ign:4 http://packages.ros.org/ros2/ubuntu jammy InRelease Ign:1 http://archive.ubuntu.com/ubuntu jammy InRelease Ign:5 http://security.ubuntu.com/ubuntu jammy-security InRelease Ign:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease Ign:3 http://archive.ubuntu.com/ubuntu jammy-backports InRelease Ign:6 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease Err:1 http://archive.ubuntu.com/ubuntu jammy InRelease Could not resolve 'archive.ubuntu.com' Err:5 http://security.ubuntu.com/ubuntu jammy-security InRelease Could not resolve 'security.ubuntu.com' Err:4 http://packages.ros.org/ros2/ubuntu jammy InRelease Could not resolve 'packages.ros.org' Err:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease Could not resolve 'archive.ubuntu.com' Err:3 http://archive.ubuntu.com/ubuntu jammy-backports InRelease Could not resolve 'archive.ubuntu.com' Err:6 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease Could not resolve 'repo.mongodb.org' Reading package lists... W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/jammy/InRelease Could not resolve 'archive.ubuntu.com' W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/jammy-updates/InRelease Could not resolve 'archive.ubuntu.com' W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/jammy-backports/InRelease Could not resolve 'archive.ubuntu.com' W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/jammy-security/InRelease Could not resolve 'security.ubuntu.com' W: Failed to fetch http://repo.mongodb.org/apt/ubuntu/dists/jammy/mongodb-org/6.0/InRelease Could not resolve 'repo.mongodb.org' W: Failed to fetch http://packages.ros.org/ros2/ubuntu/dists/jammy/InRelease Could not resolve 'packages.ros.org' W: Some index files failed to download. They have been ignored, or old ones used instead. #All required rosdeps installed successfully Starting >>> custom_interfaces Starting >>> diagnostics Finished <<< diagnostics [0.23s] Finished <<< custom_interfaces [1.30s] Starting >>> boat_simulator Starting >>> controller Starting >>> integration_tests Starting >>> local_pathfinding Starting >>> network_systems Finished <<< network_systems [1.51s] Finished <<< boat_simulator [2.08s] Finished <<< integration_tests [2.09s] Finished <<< controller [2.11s] Finished <<< local_pathfinding [2.11s] Summary: 7 packages finished [4.02s] [INFO] [launch]: All log files can be found below /home/ros/.ros/log/2024-06-17-13-53-53-188909-9cae12a476e8-1654 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [navigate-5]: process started with pid [1663] [INFO] [mock_global_path-6]: process started with pid [1665] [INFO] [wingsail_ctrl_node-1]: process started with pid [1655] [INFO] [physics_engine_node-2]: process started with pid [1657] [INFO] [low_level_control_node-3]: process started with pid [1659] [INFO] [data_collection_node-4]: process started with pid [1661] [INFO] [example-7]: process started with pid [1667] [INFO] [mock_ais-8]: process started with pid [1669] [INFO] [can_transceiver-9]: process started with pid [1671] [INFO] [remote_transceiver-10]: process started with pid [1673] [INFO] [local_transceiver-11]: process started with pid [1675] [local_transceiver-11] [INFO] [1718657633.461675549] [local_transceiver_node]: Running Local Transceiver in mode: development, with port: /tmp/local_transceiver_test_port. [local_transceiver-11] open: No such file or directory [remote_transceiver-10] [INFO] [1718657633.498269590] [remote_transceiver_node]: Running Remote Transceiver in mode: development, with database: test, host: 127.0.0.1, port: 8081, num_threads: 2 [mock_ais-8] [INFO] [1718657633.514452200] [mock_ais_node]: Mock AIS is DISABLED [can_transceiver-9] [INFO] [1718657633.522748712] [can_transceiver_node]: Running CAN Transceiver in development mode with CAN Sim Intf [ERROR] [local_transceiver-11]: process has died [pid 1675, exit code 255, cmd '/workspaces/sailbot_workspace/install/lib/network_systems/local_transceiver --ros-args --log-level local_transceiver_node:=info --ros-args -r __node:=local_transceiver_node -r __ns:=/ --params-file /workspaces/sailbot_workspace/src/global_launch/config/globals.yaml --params-file /tmp/launch_params_epzoi4yr --params-file /workspaces/sailbot_workspace/src/global_launch/config/globals.yaml']. [data_collection_node-4] [WARN] [1718657634.118009581] [data_collection_node]: JSON file with name ros_data_collection already exists. Overwriting old file... [INFO] [data_collection_node-4]: process has finished cleanly [pid 1661] [navigate-5] Traceback (most recent call last): [navigate-5] File "/workspaces/sailbot_workspace/install/lib/local_pathfinding/navigate", line 33, in [navigate-5] sys.exit(load_entry_point('local-pathfinding', 'console_scripts', 'navigate')()) [navigate-5] File "/workspaces/sailbot_workspace/build/local_pathfinding/local_pathfinding/node_navigate.py", line 14, in main [navigate-5] rclpy.spin(node=sailbot) [navigate-5] File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/__init__.py", line 222, in spin [navigate-5] executor.spin_once() [navigate-5] File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py", line 739, in spin_once [navigate-5] self._spin_once_impl(timeout_sec) [navigate-5] File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py", line 736, in _spin_once_impl [navigate-5] raise handler.exception() [navigate-5] File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/task.py", line 239, in __call__ [navigate-5] self._handler.send(None) [navigate-5] File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py", line 437, in handler [navigate-5] await call_coroutine(entity, arg) [navigate-5] File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py", line 351, in _execute_timer [navigate-5] await await_or_execute(tmr.callback) [navigate-5] File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py", line 107, in await_or_execute [navigate-5] return callback(*args) [navigate-5] File "/workspaces/sailbot_workspace/build/local_pathfinding/local_pathfinding/node_navigate.py", line 141, in desired_heading_callback [navigate-5] desired_heading = self.get_desired_heading() [navigate-5] File "/workspaces/sailbot_workspace/build/local_pathfinding/local_pathfinding/node_navigate.py", line 174, in get_desired_heading [navigate-5] self.local_path.update_if_needed( [navigate-5] File "/workspaces/sailbot_workspace/build/local_pathfinding/local_pathfinding/local_path.py", line 91, in update_if_needed [navigate-5] ompl_path = OMPLPath( [navigate-5] File "/workspaces/sailbot_workspace/build/local_pathfinding/local_pathfinding/ompl_path.py", line 79, in __init__ [navigate-5] self.state = OMPLPathState(local_path_state, self._logger) [navigate-5] File "/workspaces/sailbot_workspace/build/local_pathfinding/local_pathfinding/ompl_path.py", line 42, in __init__ [navigate-5] if local_path_state and len(local_path_state.global_path) > 0 [navigate-5] AttributeError: 'LocalPathState' object has no attribute 'global_path' [mock_global_path-6] [INFO] [1718657634.577050969] [mgp_main]: Retreiving current position from http://localhost:3005/api/gps [mock_global_path-6] URL Error: [Errno 111] Connection refused [mock_global_path-6] [INFO] [1718657634.580704667] [mgp_main]: Global path file is: mock_global_path.csv [mock_global_path-6] Reading path [mock_global_path-6] [INFO] [1718657634.585210219] [mgp_main]: Some waypoints in the global path exceed the maximum interval spacing of 30.0 km. Interpolating between waypoints and generating path [physics_engine_node-2] [INFO] [1718657634.638956780] [physics_engine_node]: Received data from sail_cmd [wingsail_ctrl_node-1] [INFO] [1718657634.643312898] [wingsail_ctrl_node]: Published to sail_cmd the following angle: 5.75 [physics_engine_node-2] [INFO] [1718657634.673744226] [physics_engine_node]: Publishing to mock_gps [physics_engine_node-2] [INFO] [1718657634.674398163] [physics_engine_node]: Publishing to mock_wind_sensors [physics_engine_node-2] [INFO] [1718657634.675141159] [physics_engine_node]: Publishing to mock_kinematics [low_level_control_node-3] [INFO] [1718657634.695390854] [low_level_control_node]: Received data from mock_gps [ERROR] [navigate-5]: process has died [pid 1663, exit code 1, cmd '/workspaces/sailbot_workspace/install/lib/local_pathfinding/navigate --ros-args --log-level navigate_main:=info --ros-args -r __node:=navigate_main --params-file /workspaces/sailbot_workspace/src/global_launch/config/globals.yaml']. [wingsail_ctrl_node-1] [INFO] [1718657635.107923901] [wingsail_ctrl_node]: Published to sail_cmd the following angle: 5.75 [wingsail_ctrl_node-1] [INFO] [1718657635.608827207] [wingsail_ctrl_node]: Published to sail_cmd the following angle: 5.75 [wingsail_ctrl_node-1] [INFO] [1718657636.107789007] [wingsail_ctrl_node]: Published to sail_cmd the following angle: 5.75 ^Ccanceled [+] Stopping 3/3 ✔ Container deployment-mongodb-1 Stopped 0.1s ✔ Container deployment-website-1 Stopped 10.1s ✔ Container deployment-sailbot-workspace-1 Stopped ```
SPDonaghy commented 3 months ago

Running the global launch file without internet works on my computer. Maybe it's a version issue?

You're running on native linux right?

If you're also running wsl2 it must be a version issue. or some docker/buildkit config

I'm not getting those versions with apt-get upgrade so I'll try to get pin docker and docker compose to the same versions as you and test it again.

patrick-5546 commented 3 months ago

I'm not getting those versions with apt-get upgrade so I'll try to get pin docker and docker compose to the same versions as you and test it again.

I'm also running wsl2. docker and docker compose come bundled with docker desktop, I have the latest version v4.31.1

SPDonaghy commented 3 months ago

Yeah I'm not able to get this working without internet. When do you have time to hop on a call to debug?