New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 860094 link

Starred by 5 users

Issue metadata

Status: Verified
Owner:
Closed: Sep 15
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug



Sign in to add a comment

rework crostini startup for Chrome to support tremplin

Project Member Reported by smbar...@chromium.org, Jul 4

Issue description

Chrome needs some mildly invasive reworking of the Crostini startup code to interface with tremplin, allowing us to eliminate the run_container.sh script. This will allow us to surface errors better, and expose download status of the container during initial setup.

See  issue 844079  for context on tremplin. This is a gRPC daemon that runs in the VM guest to control LXD. A few new D-Bus methods and signals have been introduced in cicerone.

Example usage of the new D-Bus APIs: https://crosreview.com/1115969

The new D-Bus methods are:
    CreateLxdContainer
    StartLxdContainer
    GetLxdContainerUsername
    SetUpLxdContainerUser

The new signals are:
    LxdContainerCreated
    LxdContainerDownloading
    TremplinStarted

CLs to cherry-pick:

src/overlays:
https://chromium-review.googlesource.com/c/chromiumos/overlays/board-overlays/+/1096897

src/platform2:
https://chromium-review.googlesource.com/c/chromiumos/platform2/+/1103005
https://chromium-review.googlesource.com/c/chromiumos/platform2/+/1103006

src/third_party/chromiumos_overlay:
https://chromium-review.googlesource.com/c/chromiumos/overlays/chromiumos-overlay/+/1119467
https://chromium-review.googlesource.com/c/chromiumos/overlays/chromiumos-overlay/+/1056131
https://chromium-review.googlesource.com/c/chromiumos/overlays/chromiumos-overlay/+/1103150

+tbuckley please triage as appropriate, I'd like to target M69 if we can get this before branch. It'd be nice to never ship a stable component version where we need to use run_container.sh.
 
Cc: dgreid@chromium.org
+dgreid FYI

Down to 2 cherry-picks:

src/platform/tremplin:
https://chromium-review.googlesource.com/c/chromiumos/platform/tremplin/+/1132599

src/platform2:
https://chromium-review.googlesource.com/c/chromiumos/platform2/+/1103006

Does this seem like something doable for 69?
I think it's desirable for 69.  However, you'll need to make a call if it'll be too disruptive so late in the cycle. you've got a week until branch, do you think that it can be stable enough by then? Can we get some idea how much test coverage we have?
We have coverage for the container create/start flow in https://chromium-review.googlesource.com/c/chromiumos/platform/tast-tests/+/1115969

The Chrome-side changes would need their own tests though.
Owner: nverne@chromium.org
Assigning to nverne for now.

Discussed with tbuckley offline, it might be worth doing the minimum here to support the new D-Bus APIs here to get metrics on how often container downloads fail, container starts fail, etc.
Status: Assigned (was: Untriaged)
Yes, re: #4 it would be awesome to add metrics to M69 to track *where* in the setup flow things fail, and it sounds like tremplin will give us a lot more insight.

While this also allows us to show the actual progress of the container download instead of an infinite progress bar, that is not a requirement for M69.
Labels: -M-69 M-70
Project Member

Comment 7 by bugdroid1@chromium.org, Aug 7

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bf30fc974f29b9ca7bc77d51b39b2f72094abb7e

commit bf30fc974f29b9ca7bc77d51b39b2f72094abb7e
Author: Nicholas Verne <nverne@chromium.org>
Date: Tue Aug 07 07:42:51 2018

Support Tremplin container setup in CiceroneClient

Crostini linux containers are going to use a new Cicerone based API for
setup. This will allow us to surface more install progress for users. A future
CL will wire this in to CrostiniManager and CrostiniRestarter.

Bug:  860094 
Change-Id: Iea91285af1bd42e5bb8ecfd5f62f66091b7e6eae
Reviewed-on: https://chromium-review.googlesource.com/1163350
Commit-Queue: Nicholas Verne <nverne@chromium.org>
Reviewed-by: Ryo Hashimoto <hashimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#581161}
[modify] https://crrev.com/bf30fc974f29b9ca7bc77d51b39b2f72094abb7e/chrome/browser/chromeos/crostini/crostini_manager.cc
[modify] https://crrev.com/bf30fc974f29b9ca7bc77d51b39b2f72094abb7e/chrome/browser/chromeos/crostini/crostini_manager.h
[modify] https://crrev.com/bf30fc974f29b9ca7bc77d51b39b2f72094abb7e/chromeos/dbus/cicerone_client.cc
[modify] https://crrev.com/bf30fc974f29b9ca7bc77d51b39b2f72094abb7e/chromeos/dbus/cicerone_client.h
[modify] https://crrev.com/bf30fc974f29b9ca7bc77d51b39b2f72094abb7e/chromeos/dbus/fake_cicerone_client.cc
[modify] https://crrev.com/bf30fc974f29b9ca7bc77d51b39b2f72094abb7e/chromeos/dbus/fake_cicerone_client.h

Project Member

Comment 8 by bugdroid1@chromium.org, Sep 1

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/eb5c3797c67ebf4126131d052e7f69060d974028

commit eb5c3797c67ebf4126131d052e7f69060d974028
Author: Nicholas Verne <nverne@chromium.org>
Date: Sat Sep 01 01:46:12 2018

Changes CrostiniRestarter to use Tremplin

Tremplin is the new way to start the crostini container. It provides
more feedback on the install progress of the container itself.

The old StartContainer stage of CrostiniRestarter is now replaced by
CreateLxdContainer, StartLxdContainer, SetUpLxdUserName in sequence. These
calls all have to wait until the Tremplin service itself has started in a vm.
As a result, StartTerminaVm now waits for Tremplin to start before calling the
callback.

Bug:  860094 
Change-Id: If55406c2b665897aff97bebb5f3cbae2205d5550
Reviewed-on: https://chromium-review.googlesource.com/1170449
Reviewed-by: Achuith Bhandarkar <achuith@chromium.org>
Reviewed-by: Timothy Loh <timloh@chromium.org>
Commit-Queue: Nicholas Verne <nverne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#588246}
[modify] https://crrev.com/eb5c3797c67ebf4126131d052e7f69060d974028/chrome/browser/chromeos/crostini/crostini_manager.cc
[modify] https://crrev.com/eb5c3797c67ebf4126131d052e7f69060d974028/chrome/browser/chromeos/crostini/crostini_manager.h
[modify] https://crrev.com/eb5c3797c67ebf4126131d052e7f69060d974028/chrome/browser/chromeos/crostini/crostini_manager_unittest.cc
[modify] https://crrev.com/eb5c3797c67ebf4126131d052e7f69060d974028/chrome/browser/chromeos/crostini/crostini_util.h
[modify] https://crrev.com/eb5c3797c67ebf4126131d052e7f69060d974028/chrome/browser/ui/views/crostini/crostini_installer_view_browsertest.cc
[modify] https://crrev.com/eb5c3797c67ebf4126131d052e7f69060d974028/chromeos/dbus/cicerone_client.cc
[modify] https://crrev.com/eb5c3797c67ebf4126131d052e7f69060d974028/chromeos/dbus/cicerone_client.h
[modify] https://crrev.com/eb5c3797c67ebf4126131d052e7f69060d974028/chromeos/dbus/concierge_client.cc
[modify] https://crrev.com/eb5c3797c67ebf4126131d052e7f69060d974028/chromeos/dbus/concierge_client.h
[modify] https://crrev.com/eb5c3797c67ebf4126131d052e7f69060d974028/chromeos/dbus/fake_cicerone_client.cc
[modify] https://crrev.com/eb5c3797c67ebf4126131d052e7f69060d974028/chromeos/dbus/fake_concierge_client.cc
[modify] https://crrev.com/eb5c3797c67ebf4126131d052e7f69060d974028/chromeos/dbus/fake_concierge_client.h

Project Member

Comment 9 by bugdroid1@chromium.org, Sep 7

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/59d977510551c7da374a30a841cf0c3ae3f8090e

commit 59d977510551c7da374a30a841cf0c3ae3f8090e
Author: Nicholas Verne <nverne@chromium.org>
Date: Fri Sep 07 05:24:05 2018

Show Download% in crostini installer.

Tremplin now sends a signal indication percent downloaded for a container.
This is bounced to the appropriate observers (in this case, the
CrostiniInstallerView). The install progress bar now indicates install
progress based on download percent and estimated time for each stage.

Bug:  860094 
Change-Id: Iaa4dfe3464e30931d8ae1fce15a46f2d5ffbe7b5
Reviewed-on: https://chromium-review.googlesource.com/1201647
Reviewed-by: Timothy Loh <timloh@chromium.org>
Commit-Queue: Nicholas Verne <nverne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#589439}
[modify] https://crrev.com/59d977510551c7da374a30a841cf0c3ae3f8090e/chrome/browser/chromeos/crostini/crostini_manager.cc
[modify] https://crrev.com/59d977510551c7da374a30a841cf0c3ae3f8090e/chrome/browser/chromeos/crostini/crostini_manager.h
[modify] https://crrev.com/59d977510551c7da374a30a841cf0c3ae3f8090e/chrome/browser/chromeos/crostini/crostini_manager_unittest.cc
[modify] https://crrev.com/59d977510551c7da374a30a841cf0c3ae3f8090e/chrome/browser/ui/views/crostini/crostini_installer_view.cc
[modify] https://crrev.com/59d977510551c7da374a30a841cf0c3ae3f8090e/chrome/browser/ui/views/crostini/crostini_installer_view.h

Cc: sbroslawsky@chromium.org
 Issue 880353  has been merged into this issue.
Status: Fixed (was: Assigned)
Cc: rohi...@chromium.org avkodipelli@chromium.org
Status: Verified (was: Fixed)
verified on kevin on M71-11120.0.0. Observing progress bar according to installation. 

Sign in to add a comment