https://dev.arvados.org/https://dev.arvados.org/favicon.ico?15576888422021-08-18T15:24:15ZArvadosArvados - Feature #17229: Integrate webshellhttps://dev.arvados.org/issues/17229?journal_id=963292021-08-18T15:24:15ZPeter Amstutzpeter.amstutz@curii.com
<ul><li><strong>Target version</strong> set to <i>2021-09-01 sprint</i></li><li><strong>Assigned To</strong> set to <i>Stephen Smith</i></li></ul> Arvados - Feature #17229: Integrate webshellhttps://dev.arvados.org/issues/17229?journal_id=963432021-08-18T19:39:26ZPeter Amstutzpeter.amstutz@curii.com
<ul><li><strong>Description</strong> updated (<a title="View differences" href="/journals/96343/diff?detail_id=93003">diff</a>)</li></ul> Arvados - Feature #17229: Integrate webshellhttps://dev.arvados.org/issues/17229?journal_id=966412021-09-01T13:50:27ZStephen Smith
<ul><li><strong>Status</strong> changed from <i>New</i> to <i>In Progress</i></li></ul> Arvados - Feature #17229: Integrate webshellhttps://dev.arvados.org/issues/17229?journal_id=966532021-09-01T15:11:27ZPeter Amstutzpeter.amstutz@curii.com
<ul><li><strong>Target version</strong> changed from <i>2021-09-01 sprint</i> to <i>2021-09-15 sprint</i></li></ul> Arvados - Feature #17229: Integrate webshellhttps://dev.arvados.org/issues/17229?journal_id=968892021-09-09T15:00:07ZStephen Smith
<ul></ul><p>Changes at <a class="changeset" title="17229: Add webshell to workbench2 Arvados-DCO-1.1-Signed-off-by: Stephen Smith <stephen@curii.com>" href="https://dev.arvados.org/projects/arvados/repository/arvados-workbench2/revisions/8faf40308b6ff0e78029a474276cbe9381ee9498">arvados-workbench2|8faf40308b6ff0e78029a474276cbe9381ee9498</a> branch 17229-integrate-webshell<br />Tests <a class="external" href="https://ci.arvados.org/view/Developer/job/developer-tests-workbench2/473/"<a href="https://ci.arvados.org/view/Developer/job/developer-tests-workbench2/473/">developer-tests-workbench2: #473 <img src="https://ci.arvados.org/buildStatus/icon?job=developer-tests-workbench2&build=473" alt="" /></a></a></p>
<p>I wasn't sure if there was a better way to get the token / user / host over to the webshell so I just used url parameters</p> Arvados - Feature #17229: Integrate webshellhttps://dev.arvados.org/issues/17229?journal_id=970572021-09-15T15:03:22ZPeter Amstutzpeter.amstutz@curii.com
<ul><li><strong>Target version</strong> changed from <i>2021-09-15 sprint</i> to <i>2021-09-29 sprint</i></li></ul> Arvados - Feature #17229: Integrate webshellhttps://dev.arvados.org/issues/17229?journal_id=971102021-09-15T21:18:13ZPeter Amstutzpeter.amstutz@curii.com
<ul></ul><p>Two comments:</p>
<p>1) The token is available in local storage. However, we also support storing the token in session storage, which not shared between tabs. Then local storage will be empty. So I think using the URL for hand off is fine.</p>
<p>The first thing it should do when the page loads is read the token into a variable, and then remove it from the URL bar (it should replace the history item, not push a new one). This prevents the user from accidentally copying-and-pasting or bookmarking a URL with their token.</p>
<p>However, if the user reloads the page and the token has been removed from the URL bar, that won't work. So for that case (where there is no token in the URL) it should fall back and check local storage. If there is no token in local storage, it should render an error and offer a link to go back to the virtual machines page.</p>
<p>Also, once the token has been sent, there is no reason to keep it in memory, so we should clear the variable.</p>
<p>2) As Lucas mentioned, workbench2 has an idle timer. The webshell should also respect the idle timer. The timeout configuration item is Workbench.IdleTimeout. If there is no keyboard or mouse activity after the specified amount of time, it should disconnect the session. In addition, I think we have have a local storage item with a "last activity" timestamp. It should set / check this timestamp to coordinate activity across all the workbench2 or webshell tabs. Lucas can tell you more.</p> Arvados - Feature #17229: Integrate webshellhttps://dev.arvados.org/issues/17229?journal_id=971162021-09-16T13:56:28ZPeter Amstutzpeter.amstutz@curii.com
<ul></ul><p>It could also be configured to only use the URL for handoff when configured for session storage, and use local storage the other times.</p> Arvados - Feature #17229: Integrate webshellhttps://dev.arvados.org/issues/17229?journal_id=971732021-09-20T18:55:03ZStephen Smith
<ul></ul><p>Changes at 405bb231a0cb75e41fdcdf22ce268fe592a2edfd<br />Tests <a class="external" href="https://ci.arvados.org/view/Developer/job/developer-tests-workbench2/485/"<a href="https://ci.arvados.org/view/Developer/job/developer-tests-workbench2/485/">developer-tests-workbench2: #485 <img src="https://ci.arvados.org/buildStatus/icon?job=developer-tests-workbench2&build=485" alt="" /></a></a></p>
<ul>
<li>Webshell falls back to localStorage if no token passed</li>
<li>I added a value to the auth store to keep track of the token storage location setting when constructed in order to inform whether to place the token in the webshell URL or let it pick up the token from localStorage
<ul>
<li>An edge case of this is if there is an extra api token, in which case it will pass over the localStorage token in favor of passing the extra api token in the URL</li>
</ul>
</li>
<li>Token is now removed from the url bar on load and cleared from variables</li>
<li>Added a message if the token is missing</li>
<li>Implemented the idle timer which will Ctrl + C, Ctrl + D to log out and integrates with the existing idle timer in localStorage</li>
<li>I also passed the timeout config in the url so it can be consistent between the app and the shell</li>
</ul> Arvados - Feature #17229: Integrate webshellhttps://dev.arvados.org/issues/17229?journal_id=971742021-09-20T21:37:33ZStephen Smith
<ul></ul><p><a class="changeset" title="17229: Patch shellinabox to cleanly close instead of sending cancel+eof Arvados-DCO-1.1-Signed-o..." href="https://dev.arvados.org/projects/arvados/repository/arvados-workbench2/revisions/0ccf1750b4143223e729fc3212b5e4b0a447b420">arvados-workbench2|0ccf1750b4143223e729fc3212b5e4b0a447b420</a><br />Tests <a class="external" href="https://ci.arvados.org/view/Developer/job/developer-tests-workbench2/486/"<a href="https://ci.arvados.org/view/Developer/job/developer-tests-workbench2/486/">developer-tests-workbench2: #486 <img src="https://ci.arvados.org/buildStatus/icon?job=developer-tests-workbench2&build=486" alt="" /></a></a></p>
<ul>
<li>Added an init flag and change request response handler to noop if it's not the initial request and the state is unconnected</li>
<li>Also keep track of the current request so we can cancel it immediately in the sessionClosed method so the browser isn't still waiting on a request</li>
</ul> Arvados - Feature #17229: Integrate webshellhttps://dev.arvados.org/issues/17229?journal_id=972862021-09-23T17:43:04ZPeter Amstutzpeter.amstutz@curii.com
<ul></ul><p>src/views/virtual-machine-panel/virtual-machine-user-panel.tsx</p>
<pre>
const EXTRA_TOKEN = "exra";
</pre>
<p>I think that's a typo?</p>
<p>Otherwise, this LGTM.</p> Arvados - Feature #17229: Integrate webshellhttps://dev.arvados.org/issues/17229?journal_id=972882021-09-23T17:49:41ZStephen Smith
<ul><li><strong>Status</strong> changed from <i>In Progress</i> to <i>Resolved</i></li></ul><p>Merged in <a class="changeset" title="Merge branch '17229-integrate-webshell' into main. Closes #17229 Arvados-DCO-1.1-Signed-off-by: ..." href="https://dev.arvados.org/projects/arvados/repository/arvados-workbench2/revisions/ffcdcd46ef82b5f099feff9bb50d4af39b5acfdb">arvados-workbench2|ffcdcd46ef82b5f099feff9bb50d4af39b5acfdb</a></p> Arvados - Feature #17229: Integrate webshellhttps://dev.arvados.org/issues/17229?journal_id=973732021-09-28T19:06:05ZPeter Amstutzpeter.amstutz@curii.com
<ul><li><strong>Release</strong> changed from <i>31</i> to <i>42</i></li></ul>