diff --git a/notebooks_tsqr/NightLog.ipynb b/notebooks_tsqr/NightLog.ipynb
index 2a7f720..4d0656c 100644
--- a/notebooks_tsqr/NightLog.ipynb
+++ b/notebooks_tsqr/NightLog.ipynb
@@ -703,7 +703,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 23,
"id": "1b509665-d538-4bd9-a93c-22c3ec1ded12",
"metadata": {},
"outputs": [
@@ -788,12 +788,12 @@
"
94 | \n",
" \n",
" \n",
- " dark | \n",
+ " bias | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 46 | \n",
- " 46 | \n",
+ " 10 | \n",
+ " 10 | \n",
"
\n",
" \n",
" cwfs | \n",
@@ -804,12 +804,12 @@
" 81 | \n",
"
\n",
" \n",
- " bias | \n",
+ " dark | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 10 | \n",
- " 10 | \n",
+ " 46 | \n",
+ " 46 | \n",
"
\n",
" \n",
" science | \n",
@@ -826,9 +826,9 @@
"text/plain": [
" good questionable junk unknown total\n",
"acq 0 0 0 94 94\n",
- "dark 0 0 0 46 46\n",
- "cwfs 0 0 0 81 81\n",
"bias 0 0 0 10 10\n",
+ "cwfs 0 0 0 81 81\n",
+ "dark 0 0 0 46 46\n",
"science 0 0 0 8 8"
]
},
@@ -872,55 +872,47 @@
" \n",
"
\n",
" \n",
- " extra | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 3 | \n",
- " 3 | \n",
- "
\n",
- " \n",
- " infocus_alignment_sweep_m2rx | \n",
+ " checking | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 7 | \n",
- " 7 | \n",
+ " 6 | \n",
+ " 6 | \n",
"
\n",
" \n",
- " extra_alignment_sweep_m2rx | \n",
+ " comcam-usdf-checkout | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 7 | \n",
- " 7 | \n",
+ " 10 | \n",
+ " 10 | \n",
"
\n",
" \n",
- " checking | \n",
+ " comcam_twilight_flat | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 6 | \n",
- " 6 | \n",
+ " 87 | \n",
+ " 87 | \n",
"
\n",
" \n",
- " extra_sitcom-826 | \n",
+ " extra | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 12 | \n",
- " 12 | \n",
+ " 3 | \n",
+ " 3 | \n",
"
\n",
" \n",
- " tmacheckout | \n",
+ " extra_alignment_sweep_m2rx | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 8 | \n",
- " 8 | \n",
+ " 7 | \n",
+ " 7 | \n",
"
\n",
" \n",
- " infocus_alignment_sweep_m2ry | \n",
+ " extra_alignment_sweep_m2ry | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
@@ -928,52 +920,52 @@
" 17 | \n",
"
\n",
" \n",
- " intra_alignment_sweep_m2rx | \n",
+ " extra_best_m2_ry | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 7 | \n",
- " 7 | \n",
+ " 1 | \n",
+ " 1 | \n",
"
\n",
" \n",
- " intra_best_m2_ry | \n",
+ " extra_sitcom-826 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 1 | \n",
- " 1 | \n",
+ " 12 | \n",
+ " 12 | \n",
"
\n",
" \n",
- " comcam_twilight_flat | \n",
+ " infocus | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 87 | \n",
- " 87 | \n",
+ " 3 | \n",
+ " 3 | \n",
"
\n",
" \n",
- " infocus_sitcom-826 | \n",
+ " infocus_alignment_sweep_m2rx | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 12 | \n",
- " 12 | \n",
+ " 7 | \n",
+ " 7 | \n",
"
\n",
" \n",
- " comcam-usdf-checkout | \n",
+ " infocus_alignment_sweep_m2ry | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 10 | \n",
- " 10 | \n",
+ " 17 | \n",
+ " 17 | \n",
"
\n",
" \n",
- " infocus | \n",
+ " infocus_sitcom-826 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 3 | \n",
- " 3 | \n",
+ " 12 | \n",
+ " 12 | \n",
"
\n",
" \n",
" intra | \n",
@@ -984,23 +976,23 @@
" 3 | \n",
"
\n",
" \n",
- " intra_alignment_sweep_m2ry | \n",
+ " intra_alignment_sweep_m2rx | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 18 | \n",
- " 18 | \n",
+ " 7 | \n",
+ " 7 | \n",
"
\n",
" \n",
- " science | \n",
+ " intra_alignment_sweep_m2ry | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 8 | \n",
- " 8 | \n",
+ " 18 | \n",
+ " 18 | \n",
"
\n",
" \n",
- " extra_best_m2_ry | \n",
+ " intra_best_m2_ry | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
@@ -1016,12 +1008,20 @@
" 12 | \n",
"
\n",
" \n",
- " extra_alignment_sweep_m2ry | \n",
+ " science | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 17 | \n",
- " 17 | \n",
+ " 8 | \n",
+ " 8 | \n",
+ "
\n",
+ " \n",
+ " tmacheckout | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 8 | \n",
+ " 8 | \n",
"
\n",
" \n",
"\n",
@@ -1029,25 +1029,25 @@
],
"text/plain": [
" good questionable junk unknown total\n",
+ "checking 0 0 0 6 6\n",
+ "comcam-usdf-checkout 0 0 0 10 10\n",
+ "comcam_twilight_flat 0 0 0 87 87\n",
"extra 0 0 0 3 3\n",
- "infocus_alignment_sweep_m2rx 0 0 0 7 7\n",
"extra_alignment_sweep_m2rx 0 0 0 7 7\n",
- "checking 0 0 0 6 6\n",
+ "extra_alignment_sweep_m2ry 0 0 0 17 17\n",
+ "extra_best_m2_ry 0 0 0 1 1\n",
"extra_sitcom-826 0 0 0 12 12\n",
- "tmacheckout 0 0 0 8 8\n",
+ "infocus 0 0 0 3 3\n",
+ "infocus_alignment_sweep_m2rx 0 0 0 7 7\n",
"infocus_alignment_sweep_m2ry 0 0 0 17 17\n",
- "intra_alignment_sweep_m2rx 0 0 0 7 7\n",
- "intra_best_m2_ry 0 0 0 1 1\n",
- "comcam_twilight_flat 0 0 0 87 87\n",
"infocus_sitcom-826 0 0 0 12 12\n",
- "comcam-usdf-checkout 0 0 0 10 10\n",
- "infocus 0 0 0 3 3\n",
"intra 0 0 0 3 3\n",
+ "intra_alignment_sweep_m2rx 0 0 0 7 7\n",
"intra_alignment_sweep_m2ry 0 0 0 18 18\n",
- "science 0 0 0 8 8\n",
- "extra_best_m2_ry 0 0 0 1 1\n",
+ "intra_best_m2_ry 0 0 0 1 1\n",
"intra_sitcom-826 0 0 0 12 12\n",
- "extra_alignment_sweep_m2ry 0 0 0 17 17"
+ "science 0 0 0 8 8\n",
+ "tmacheckout 0 0 0 8 8"
]
},
"metadata": {},
@@ -1090,12 +1090,12 @@
" \n",
" \n",
" \n",
- " BLOCK-T279 | \n",
+ " BLOCK-T215 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 98 | \n",
- " 98 | \n",
+ " 87 | \n",
+ " 87 | \n",
"
\n",
" \n",
" BLOCK-T246 | \n",
@@ -1106,44 +1106,44 @@
" 10 | \n",
"
\n",
" \n",
- " BLOCK-T250 | \n",
+ " BLOCK-T248 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 6 | \n",
- " 6 | \n",
+ " 17 | \n",
+ " 17 | \n",
"
\n",
" \n",
- " BLOCK-T248 | \n",
+ " BLOCK-T249 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 17 | \n",
- " 17 | \n",
+ " 11 | \n",
+ " 11 | \n",
"
\n",
" \n",
- " BLOCK-T92 | \n",
+ " BLOCK-T250 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 2 | \n",
- " 2 | \n",
+ " 6 | \n",
+ " 6 | \n",
"
\n",
" \n",
- " BLOCK-T249 | \n",
+ " BLOCK-T279 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 11 | \n",
- " 11 | \n",
+ " 98 | \n",
+ " 98 | \n",
"
\n",
" \n",
- " BLOCK-T215 | \n",
+ " BLOCK-T92 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
- " 87 | \n",
- " 87 | \n",
+ " 2 | \n",
+ " 2 | \n",
"
\n",
" \n",
" PP-SURVEY | \n",
@@ -1159,13 +1159,13 @@
],
"text/plain": [
" good questionable junk unknown total\n",
- "BLOCK-T279 0 0 0 98 98\n",
+ "BLOCK-T215 0 0 0 87 87\n",
"BLOCK-T246 0 0 0 10 10\n",
- "BLOCK-T250 0 0 0 6 6\n",
"BLOCK-T248 0 0 0 17 17\n",
- "BLOCK-T92 0 0 0 2 2\n",
"BLOCK-T249 0 0 0 11 11\n",
- "BLOCK-T215 0 0 0 87 87\n",
+ "BLOCK-T250 0 0 0 6 6\n",
+ "BLOCK-T279 0 0 0 98 98\n",
+ "BLOCK-T92 0 0 0 2 2\n",
"PP-SURVEY 0 0 0 8 8"
]
},
@@ -1193,7 +1193,7 @@
" if df.empty:\n",
" continue\n",
" print(field_name.title().replace('_',' '))\n",
- " display(df.T)"
+ " display(df.T.sort_index())"
]
},
{
diff --git a/notebooks_tsqr/dashboard.ipynb b/notebooks_tsqr/dashboard.ipynb
index 8a918b4..9b02788 100644
--- a/notebooks_tsqr/dashboard.ipynb
+++ b/notebooks_tsqr/dashboard.ipynb
@@ -36,7 +36,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"id": "3",
"metadata": {},
"outputs": [
@@ -47,7 +47,48 @@
"Try connect to each endpoint of https://summit-lsp.lsst.codes/nightreport \n",
"Try connect to each endpoint of https://summit-lsp.lsst.codes/narrativelog \n",
"Try connect to each endpoint of https://summit-lsp.lsst.codes/exposurelog \n",
- "Try connect to each endpoint of https://usdf-rsp-dev.slac.stanford.edu/nightreport \n"
+ "Try connect to each endpoint of https://usdf-rsp-dev.slac.stanford.edu/nightreport \n",
+ "Try connect to each endpoint of https://usdf-rsp-dev.slac.stanford.edu/narrativelog \n",
+ "Try connect to each endpoint of https://usdf-rsp-dev.slac.stanford.edu/exposurelog \n"
+ ]
+ },
+ {
+ "ename": "ConnectTimeout",
+ "evalue": "HTTPSConnectionPool(host='tucson-teststand.lsst.codes', port=443): Max retries exceeded with url: /nightreport/reports?limit=2 (Caused by ConnectTimeoutError(, 'Connection to tucson-teststand.lsst.codes timed out. (connect timeout=5.05)'))",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mTimeoutError\u001b[0m Traceback (most recent call last)",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/urllib3/connection.py:174\u001b[0m, in \u001b[0;36mHTTPConnection._new_conn\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 174\u001b[0m conn \u001b[38;5;241m=\u001b[39m \u001b[43mconnection\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcreate_connection\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 175\u001b[0m \u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_dns_host\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mport\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mextra_kw\u001b[49m\n\u001b[1;32m 176\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 178\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m SocketTimeout:\n",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/urllib3/util/connection.py:95\u001b[0m, in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address, socket_options)\u001b[0m\n\u001b[1;32m 94\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m err \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 95\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m err\n\u001b[1;32m 97\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m socket\u001b[38;5;241m.\u001b[39merror(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mgetaddrinfo returns an empty list\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/urllib3/util/connection.py:85\u001b[0m, in \u001b[0;36mcreate_connection\u001b[0;34m(address, timeout, source_address, socket_options)\u001b[0m\n\u001b[1;32m 84\u001b[0m sock\u001b[38;5;241m.\u001b[39mbind(source_address)\n\u001b[0;32m---> 85\u001b[0m \u001b[43msock\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect\u001b[49m\u001b[43m(\u001b[49m\u001b[43msa\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 86\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m sock\n",
+ "\u001b[0;31mTimeoutError\u001b[0m: timed out",
+ "\nDuring handling of the above exception, another exception occurred:\n",
+ "\u001b[0;31mConnectTimeoutError\u001b[0m Traceback (most recent call last)",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/urllib3/connectionpool.py:715\u001b[0m, in \u001b[0;36mHTTPConnectionPool.urlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[1;32m 714\u001b[0m \u001b[38;5;66;03m# Make the request on the httplib connection object.\u001b[39;00m\n\u001b[0;32m--> 715\u001b[0m httplib_response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 716\u001b[0m \u001b[43m \u001b[49m\u001b[43mconn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 717\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 718\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 719\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout_obj\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 720\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 721\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 722\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 723\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 725\u001b[0m \u001b[38;5;66;03m# If we're going to release the connection in ``finally:``, then\u001b[39;00m\n\u001b[1;32m 726\u001b[0m \u001b[38;5;66;03m# the response doesn't need to know about the connection. Otherwise\u001b[39;00m\n\u001b[1;32m 727\u001b[0m \u001b[38;5;66;03m# it will also try to release it and we'll have a double-release\u001b[39;00m\n\u001b[1;32m 728\u001b[0m \u001b[38;5;66;03m# mess.\u001b[39;00m\n",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/urllib3/connectionpool.py:404\u001b[0m, in \u001b[0;36mHTTPConnectionPool._make_request\u001b[0;34m(self, conn, method, url, timeout, chunked, **httplib_request_kw)\u001b[0m\n\u001b[1;32m 403\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 404\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_validate_conn\u001b[49m\u001b[43m(\u001b[49m\u001b[43mconn\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 405\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (SocketTimeout, BaseSSLError) \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 406\u001b[0m \u001b[38;5;66;03m# Py2 raises this as a BaseSSLError, Py3 raises it as socket timeout.\u001b[39;00m\n",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/urllib3/connectionpool.py:1060\u001b[0m, in \u001b[0;36mHTTPSConnectionPool._validate_conn\u001b[0;34m(self, conn)\u001b[0m\n\u001b[1;32m 1059\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mgetattr\u001b[39m(conn, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msock\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m): \u001b[38;5;66;03m# AppEngine might not have `.sock`\u001b[39;00m\n\u001b[0;32m-> 1060\u001b[0m \u001b[43mconn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1062\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m conn\u001b[38;5;241m.\u001b[39mis_verified:\n",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/urllib3/connection.py:363\u001b[0m, in \u001b[0;36mHTTPSConnection.connect\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 361\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mconnect\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 362\u001b[0m \u001b[38;5;66;03m# Add certificate verification\u001b[39;00m\n\u001b[0;32m--> 363\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39msock \u001b[38;5;241m=\u001b[39m conn \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_new_conn\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 364\u001b[0m hostname \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhost\n",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/urllib3/connection.py:179\u001b[0m, in \u001b[0;36mHTTPConnection._new_conn\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 178\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m SocketTimeout:\n\u001b[0;32m--> 179\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ConnectTimeoutError(\n\u001b[1;32m 180\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 181\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mConnection to \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m timed out. (connect timeout=\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m)\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 182\u001b[0m \u001b[38;5;241m%\u001b[39m (\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhost, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtimeout),\n\u001b[1;32m 183\u001b[0m )\n\u001b[1;32m 185\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m SocketError \u001b[38;5;28;01mas\u001b[39;00m e:\n",
+ "\u001b[0;31mConnectTimeoutError\u001b[0m: (, 'Connection to tucson-teststand.lsst.codes timed out. (connect timeout=5.05)')",
+ "\nDuring handling of the above exception, another exception occurred:\n",
+ "\u001b[0;31mMaxRetryError\u001b[0m Traceback (most recent call last)",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/requests/adapters.py:667\u001b[0m, in \u001b[0;36mHTTPAdapter.send\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 666\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 667\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[43mconn\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43murlopen\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 668\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 669\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 670\u001b[0m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 671\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 672\u001b[0m \u001b[43m \u001b[49m\u001b[43mredirect\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 673\u001b[0m \u001b[43m \u001b[49m\u001b[43massert_same_host\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 674\u001b[0m \u001b[43m \u001b[49m\u001b[43mpreload_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 675\u001b[0m \u001b[43m \u001b[49m\u001b[43mdecode_content\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[1;32m 676\u001b[0m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmax_retries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 677\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 678\u001b[0m \u001b[43m \u001b[49m\u001b[43mchunked\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mchunked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 679\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 681\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m (ProtocolError, \u001b[38;5;167;01mOSError\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m err:\n",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/urllib3/connectionpool.py:801\u001b[0m, in \u001b[0;36mHTTPConnectionPool.urlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[1;32m 799\u001b[0m e \u001b[38;5;241m=\u001b[39m ProtocolError(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mConnection aborted.\u001b[39m\u001b[38;5;124m\"\u001b[39m, e)\n\u001b[0;32m--> 801\u001b[0m retries \u001b[38;5;241m=\u001b[39m \u001b[43mretries\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mincrement\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 802\u001b[0m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43merror\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43me\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_pool\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_stacktrace\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43msys\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexc_info\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[1;32m 803\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 804\u001b[0m retries\u001b[38;5;241m.\u001b[39msleep()\n",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/urllib3/util/retry.py:594\u001b[0m, in \u001b[0;36mRetry.increment\u001b[0;34m(self, method, url, response, error, _pool, _stacktrace)\u001b[0m\n\u001b[1;32m 593\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m new_retry\u001b[38;5;241m.\u001b[39mis_exhausted():\n\u001b[0;32m--> 594\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m MaxRetryError(_pool, url, error \u001b[38;5;129;01mor\u001b[39;00m ResponseError(cause))\n\u001b[1;32m 596\u001b[0m log\u001b[38;5;241m.\u001b[39mdebug(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mIncremented Retry for (url=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m): \u001b[39m\u001b[38;5;132;01m%r\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, url, new_retry)\n",
+ "\u001b[0;31mMaxRetryError\u001b[0m: HTTPSConnectionPool(host='tucson-teststand.lsst.codes', port=443): Max retries exceeded with url: /nightreport/reports?limit=2 (Caused by ConnectTimeoutError(, 'Connection to tucson-teststand.lsst.codes timed out. (connect timeout=5.05)'))",
+ "\nDuring handling of the above exception, another exception occurred:\n",
+ "\u001b[0;31mConnectTimeout\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn[2], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m dash \u001b[38;5;241m=\u001b[39m Dashboard()\n\u001b[0;32m----> 2\u001b[0m score, working \u001b[38;5;241m=\u001b[39m \u001b[43mdash\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mreport\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# On 9/12/2024 this gets two failed connects.\u001b[39;00m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;66;03m# The are usdf: exposurelog/instruments,exposurelog/exposures\u001b[39;00m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;66;03m# When usdfdev if fully functional, there should be zero failed connects (with both VPNs active).\u001b[39;00m\n",
+ "File \u001b[0;32m~/develop/ts_logging_and_reporting/python/lsst/ts/logging_and_reporting/dashboard.py:70\u001b[0m, in \u001b[0;36mDashboard.report\u001b[0;34m(self, timeout, verbose)\u001b[0m\n\u001b[1;32m 68\u001b[0m server_all_good \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 69\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m adapter \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39madapters:\n\u001b[0;32m---> 70\u001b[0m service \u001b[38;5;241m=\u001b[39m \u001b[43madapter\u001b[49m\u001b[43m(\u001b[49m\u001b[43mserver_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mserver\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 71\u001b[0m service\u001b[38;5;241m.\u001b[39mverbose \u001b[38;5;241m=\u001b[39m verbose\n\u001b[1;32m 72\u001b[0m stats, aag \u001b[38;5;241m=\u001b[39m service\u001b[38;5;241m.\u001b[39mcheck_endpoints(timeout\u001b[38;5;241m=\u001b[39mtimeout)\n",
+ "File \u001b[0;32m~/develop/ts_logging_and_reporting/python/lsst/ts/logging_and_reporting/source_adapters.py:338\u001b[0m, in \u001b[0;36mNightReportAdapter.__init__\u001b[0;34m(self, server_url, min_dayobs, max_dayobs, limit, verbose)\u001b[0m\n\u001b[1;32m 336\u001b[0m \u001b[38;5;66;03m# Load the data (records) we need from relevant endpoints\u001b[39;00m\n\u001b[1;32m 337\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mmin_date:\n\u001b[0;32m--> 338\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhack_reconnect_after_idle\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 339\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstatus[\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprimary_endpoint] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mget_records()\n",
+ "File \u001b[0;32m~/develop/ts_logging_and_reporting/python/lsst/ts/logging_and_reporting/source_adapters.py:164\u001b[0m, in \u001b[0;36mSourceAdapter.hack_reconnect_after_idle\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 162\u001b[0m qparams \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mdict\u001b[39m(limit\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m2\u001b[39m) \u001b[38;5;66;03m# API requires > 1 !\u001b[39;00m\n\u001b[1;32m 163\u001b[0m url \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mendpoint\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m?\u001b[39m\u001b[38;5;132;01m{\u001b[39;00murlencode(qparams)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m--> 164\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mrequests\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 165\u001b[0m invalid_response(response, url, timeout\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mtimeout)\n\u001b[1;32m 166\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m response\u001b[38;5;241m.\u001b[39mstatus_code\n",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/requests/api.py:73\u001b[0m, in \u001b[0;36mget\u001b[0;34m(url, params, **kwargs)\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mget\u001b[39m(url, params\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 63\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124mr\u001b[39m\u001b[38;5;124;03m\"\"\"Sends a GET request.\u001b[39;00m\n\u001b[1;32m 64\u001b[0m \n\u001b[1;32m 65\u001b[0m \u001b[38;5;124;03m :param url: URL for the new :class:`Request` object.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 70\u001b[0m \u001b[38;5;124;03m :rtype: requests.Response\u001b[39;00m\n\u001b[1;32m 71\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 73\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mget\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/requests/api.py:59\u001b[0m, in \u001b[0;36mrequest\u001b[0;34m(method, url, **kwargs)\u001b[0m\n\u001b[1;32m 55\u001b[0m \u001b[38;5;66;03m# By using the 'with' statement we are sure the session is closed, thus we\u001b[39;00m\n\u001b[1;32m 56\u001b[0m \u001b[38;5;66;03m# avoid leaving sockets open which can trigger a ResourceWarning in some\u001b[39;00m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;66;03m# cases, and look like a memory leak in others.\u001b[39;00m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m sessions\u001b[38;5;241m.\u001b[39mSession() \u001b[38;5;28;01mas\u001b[39;00m session:\n\u001b[0;32m---> 59\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43msession\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmethod\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/requests/sessions.py:589\u001b[0m, in \u001b[0;36mSession.request\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 584\u001b[0m send_kwargs \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 585\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtimeout\u001b[39m\u001b[38;5;124m\"\u001b[39m: timeout,\n\u001b[1;32m 586\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mallow_redirects\u001b[39m\u001b[38;5;124m\"\u001b[39m: allow_redirects,\n\u001b[1;32m 587\u001b[0m }\n\u001b[1;32m 588\u001b[0m send_kwargs\u001b[38;5;241m.\u001b[39mupdate(settings)\n\u001b[0;32m--> 589\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprep\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43msend_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 591\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m resp\n",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/requests/sessions.py:703\u001b[0m, in \u001b[0;36mSession.send\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 700\u001b[0m start \u001b[38;5;241m=\u001b[39m preferred_clock()\n\u001b[1;32m 702\u001b[0m \u001b[38;5;66;03m# Send the request\u001b[39;00m\n\u001b[0;32m--> 703\u001b[0m r \u001b[38;5;241m=\u001b[39m \u001b[43madapter\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 705\u001b[0m \u001b[38;5;66;03m# Total elapsed time of the request (approximately)\u001b[39;00m\n\u001b[1;32m 706\u001b[0m elapsed \u001b[38;5;241m=\u001b[39m preferred_clock() \u001b[38;5;241m-\u001b[39m start\n",
+ "File \u001b[0;32m/opt/lsst/software/stack/conda/envs/lsst-scipipe-9.0.0/lib/python3.11/site-packages/requests/adapters.py:688\u001b[0m, in \u001b[0;36mHTTPAdapter.send\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 685\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(e\u001b[38;5;241m.\u001b[39mreason, ConnectTimeoutError):\n\u001b[1;32m 686\u001b[0m \u001b[38;5;66;03m# TODO: Remove this in 3.0.0: see #2811\u001b[39;00m\n\u001b[1;32m 687\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(e\u001b[38;5;241m.\u001b[39mreason, NewConnectionError):\n\u001b[0;32m--> 688\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ConnectTimeout(e, request\u001b[38;5;241m=\u001b[39mrequest)\n\u001b[1;32m 690\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(e\u001b[38;5;241m.\u001b[39mreason, ResponseError):\n\u001b[1;32m 691\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m RetryError(e, request\u001b[38;5;241m=\u001b[39mrequest)\n",
+ "\u001b[0;31mConnectTimeout\u001b[0m: HTTPSConnectionPool(host='tucson-teststand.lsst.codes', port=443): Max retries exceeded with url: /nightreport/reports?limit=2 (Caused by ConnectTimeoutError(, 'Connection to tucson-teststand.lsst.codes timed out. (connect timeout=5.05)'))"
]
}
],