Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(app-shell-odd): create node layer for ODD #11852

Merged
merged 50 commits into from
Jan 3, 2023

Conversation

shlokamin
Copy link
Member

@shlokamin shlokamin commented Dec 8, 2022

Overview

This PR adds the node layer (app-shell-odd) to the app-shell.

The main thing the new app-shell-odd does differently than the app-shell is the way it facilitates software updates. We no longer rely on electron-updater to facilitate the process. The app will periodically tell the node layer to check if an update is available by pinging the OT-3 release manifest rather than having electron-updater do this for us. The reason for this is that we don't currently (and have no plans to) publish a standalone linux arm64 version of the app. Since electron-updater looks for updates for the OS that the app is running on, it has no way of knowing if an update is available.

See this proposal for more info if you're curious

Closes RCORE-431, RCORE-432

Changelog

  • Add node layer for app shell
  • Add node layer system update infrastructure for OT-3

Review requests

  • Push this branch onto your ODD dev kit/OT-3 (make -C app-shell-odd push-ot3 host=ROBOT_IP)
  • Open dev tools on the ODD
  • Ssh into the robot and tail logs on the update server ( journalctl -f -u opentrons-update-server)
  • Go to the robot dashboard
  • After the OT-3 downloads the latest update (6.2) from the network, it will show a button saying Download latest OT-3 system version (it should take about a minute)
  • Click the button. In the dev tools on the ODD, you should see network successful requests to 1) start a buildroot session and 2) initiate a system update
  • In the tailed logs for the update server, you can see the update process is happening
  • After about 5 minutes, the robot should restart and the software should be updated!

Risk assessment

Low, this is not being used in production yet

@codecov
Copy link

codecov bot commented Dec 8, 2022

Codecov Report

Merging #11852 (c6d2b6d) into edge (236670c) will increase coverage by 0.03%.
The diff coverage is 80.00%.

Impacted file tree graph

@@            Coverage Diff             @@
##             edge   #11852      +/-   ##
==========================================
+ Coverage   74.18%   74.22%   +0.03%     
==========================================
  Files        2164     1431     -733     
  Lines       59749    47364   -12385     
  Branches     6263     3013    -3250     
==========================================
- Hits        44323    35154    -9169     
+ Misses      13952    11743    -2209     
+ Partials     1474      467    -1007     
Flag Coverage Δ
app 61.20% <80.00%> (-12.01%) ⬇️
components 65.28% <ø> (ø)
g-code-testing 97.19% <ø> (ø)
hardware 56.89% <ø> (+0.30%) ⬆️
hardware-testing ∅ <ø> (∅)
labware-library 49.74% <ø> (ø)
notify-server 89.13% <ø> (ø)
protocol-designer 45.89% <ø> (ø)
react-api-client 83.05% <ø> (ø)
shared-data 85.47% <ø> (+0.60%) ⬆️
step-generation 88.46% <ø> (ø)
update-server 65.47% <ø> (ø)
usb-bridge 81.35% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
app-shell/src/buildroot/index.ts 0.00% <0.00%> (ø)
app-shell/src/config/migrate.ts 93.87% <100.00%> (+0.54%) ⬆️
hardware/opentrons_hardware/scripts/can_mon.py 0.00% <0.00%> (ø)
.../opentrons_hardware/firmware_bindings/constants.py 100.00% <0.00%> (ø)
...pp/src/pages/OnDeviceDisplay/TempODDMenu/index.tsx
app/src/redux/buildroot/selectors.ts
app/src/redux/config/constants.ts
...vices/ProtocolRun/SetupLiquids/SetupLiquidsMap.tsx
app/src/organisms/Devices/ReachableBanner.tsx
...lRun/DeprecatedSetupTipLengthCalibrationButton.tsx
... and 734 more

@shlokamin shlokamin force-pushed the app-shell_create-node-layer-for-ODD branch from d5e49d1 to 0c1e399 Compare December 21, 2022 16:55
@@ -13,7 +13,7 @@ interface File {
export interface UpdateInfo {
version: string
files: File[]
releaseDate: string
releaseDate?: string
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

releaseDate isn't provided by the OT-3 build manifest, but we also dont use releaseDate anywhere in the app

@shlokamin shlokamin marked this pull request as ready for review December 23, 2022 02:01
@shlokamin shlokamin requested review from a team as code owners December 23, 2022 02:01
@shlokamin shlokamin requested review from b-cooper, sfoster1 and brenthagen and removed request for a team December 23, 2022 02:01
@shlokamin shlokamin changed the title feat(app-shell-odd): create node layer for odd feat(app-shell-odd): create node layer for ODD Dec 29, 2022
Copy link
Member

@sfoster1 sfoster1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hooray!!!

@shlokamin shlokamin merged commit 9422935 into edge Jan 3, 2023
shlokamin added a commit that referenced this pull request Jan 3, 2023
y3rsh added a commit that referenced this pull request Jan 6, 2023
* origin/edge: (34 commits)
  refactor(app): update desktop robot settings calibration section for OT-3 (#11942)
  feat(hardware): add CAN message to update motor position from encoders (#11868)
  ci(monorepo): upgrade windows versions on github workflows (#11940)
  feat(app): implement useCalibrationTaskList hook (#11894)
  feat(app, app-shell, app-shell-odd): create node layer for ODD (#11944)
  refactor(app): Remove recalibrate option from POC and TLC overflow menus [RAUT-93] (#11915)
  fix(api): home z should home gripper z too (#11950)
  refactor(shared-data): gripper use force polynomial function  (#11946)
  refactor(api): move `ModuleGeometry` to legacy protocol core module (#11939)
  refactor(api): deprecate `ModuleContext.geometry` (#11938)
  chore(usb-bridge): add usb-bridge tests to test-py, add restart to push-ot3 (#11937)
  Revert "feat(app-shell-odd): create node layer for ODD (#11852)" (#11941)
  feat(app-shell-odd): create node layer for ODD (#11852)
  feature(hardware): add a warning style to can_mon and an "estop_released" error id (#11924)
  fix(hardware): Remove while loop and rely on  number_of_messages when parsing motor position response.  (#11929)
  fix(hardware): save can_comm / can_mon logs to read-write location (#11933)
  feat(api): Support 96 channel in the hardware controller (#11866)
  refactor(app): revert run a protocol from devices pages (#11909)
  refactor(app): remove warnings (#11922)
  refactor(app): remove invalid type warnings for strings from atoms (#11918)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants