cros/recovery: Support RPM power cycling in PASIT [infra/infra : main]

0 views
Skip to first unread message

Mark Yacoub (Gerrit)

unread,
Jul 20, 2026, 2:55:03 PM (2 days ago) Jul 20
to Jason Stanko, Brett Brotherton, Otabek Kasimov, Alexandr Astrouski, chromium...@chromium.org, infra-rev...@chromium.org
Attention needed from Alexandr Astrouski, Jason Stanko and Otabek Kasimov

Mark Yacoub added 1 comment

Patchset-level comments
File-level comment, Patchset 16 (Latest):
Mark Yacoub . unresolved

is this so i can reset the UCD on repair?

Open in Gerrit

Related details

Attention is currently required from:
  • Alexandr Astrouski
  • Jason Stanko
  • Otabek Kasimov
Submit Requirements:
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: infra/infra
Gerrit-Branch: main
Gerrit-Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
Gerrit-Change-Number: 8119539
Gerrit-PatchSet: 16
Gerrit-Owner: Jason Stanko <jst...@google.com>
Gerrit-Reviewer: Alexandr Astrouski <astr...@google.com>
Gerrit-Reviewer: Otabek Kasimov <ota...@google.com>
Gerrit-CC: Brett Brotherton <bbrot...@google.com>
Gerrit-CC: Mark Yacoub <marky...@google.com>
Gerrit-Attention: Jason Stanko <jst...@google.com>
Gerrit-Attention: Alexandr Astrouski <astr...@google.com>
Gerrit-Attention: Otabek Kasimov <ota...@google.com>
Gerrit-Comment-Date: Mon, 20 Jul 2026 18:54:59 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
unsatisfied_requirement
open
diffy

Jason Stanko (Gerrit)

unread,
Jul 20, 2026, 2:56:41 PM (2 days ago) Jul 20
to Brett Brotherton, Otabek Kasimov, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
Attention needed from Alexandr Astrouski, Mark Yacoub and Otabek Kasimov

Jason Stanko added 1 comment

Patchset-level comments
Mark Yacoub . unresolved

is this so i can reset the UCD on repair?

Jason Stanko

Yes it will:
1. Shut off UCD via RPM
2. Reboot DUT
3. Plug UCD back in via RPM

Open in Gerrit

Related details

Attention is currently required from:
  • Alexandr Astrouski
  • Mark Yacoub
  • Otabek Kasimov
Submit Requirements:
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: infra/infra
Gerrit-Branch: main
Gerrit-Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
Gerrit-Change-Number: 8119539
Gerrit-PatchSet: 16
Gerrit-Owner: Jason Stanko <jst...@google.com>
Gerrit-Reviewer: Alexandr Astrouski <astr...@google.com>
Gerrit-Reviewer: Otabek Kasimov <ota...@google.com>
Gerrit-CC: Brett Brotherton <bbrot...@google.com>
Gerrit-CC: Mark Yacoub <marky...@google.com>
Gerrit-Attention: Mark Yacoub <marky...@google.com>
Gerrit-Attention: Alexandr Astrouski <astr...@google.com>
Gerrit-Attention: Otabek Kasimov <ota...@google.com>
Gerrit-Comment-Date: Mon, 20 Jul 2026 18:56:37 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Mark Yacoub <marky...@google.com>
unsatisfied_requirement
open
diffy

Mark Yacoub (Gerrit)

unread,
Jul 20, 2026, 3:00:16 PM (2 days ago) Jul 20
to Jason Stanko, Brett Brotherton, Otabek Kasimov, Alexandr Astrouski, chromium...@chromium.org, infra-rev...@chromium.org
Attention needed from Alexandr Astrouski, Mark Yacoub and Otabek Kasimov

Mark Yacoub added 2 comments

File go/src/infra/cros/cmd/paris/internal/tasks/local_recovery.go
Line 289, Patchset 16 (Latest): initCtx, cancel := context.WithTimeout(ctx, 3*time.Second)
Mark Yacoub . unresolved

A 3-second timeout for establishing all host proxies might be a bit short in environments with high latency or many resources. Was this value chosen based on a specific requirement?

File go/src/infra/cros/recovery/internal/rpm/rpm_ip9850.go
Line 85, Patchset 16 (Latest): scheme = "http"
Mark Yacoub . unresolved

Why is the scheme changed to HTTP when a proxy is used?

If the proxy is a standard SSH tunnel (TCP forwarding), it will pass the data as-is. If the RPM unit expects HTTPS (as the original code implied by hardcoding https), switching to http here will cause the connection to fail unless the proxy is specifically terminating SSL/TLS.

Gerrit-Comment-Date: Mon, 20 Jul 2026 19:00:12 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
unsatisfied_requirement
open
diffy

Jason Stanko (Gerrit)

unread,
Jul 20, 2026, 4:51:21 PM (2 days ago) Jul 20
to Brett Brotherton, Otabek Kasimov, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
Attention needed from Alexandr Astrouski, Mark Yacoub and Otabek Kasimov

Jason Stanko added 2 comments

File go/src/infra/cros/cmd/paris/internal/tasks/local_recovery.go
Line 289, Patchset 16: initCtx, cancel := context.WithTimeout(ctx, 3*time.Second)
Mark Yacoub . unresolved

A 3-second timeout for establishing all host proxies might be a bit short in environments with high latency or many resources. Was this value chosen based on a specific requirement?

Jason Stanko

This is just needed because the connection is optional when running locally. Without setting a timeout it will hang for like 10 minutes until the context expires. This only initializes the local TLW client struct and attempts a single gRPC connection (it doesn't open SSH host tunnels/proxies). I bumped it up to 10 seconds though.

File go/src/infra/cros/recovery/internal/rpm/rpm_ip9850.go
Line 85, Patchset 16: scheme = "http"
Mark Yacoub . unresolved

Why is the scheme changed to HTTP when a proxy is used?

If the proxy is a standard SSH tunnel (TCP forwarding), it will pass the data as-is. If the RPM unit expects HTTPS (as the original code implied by hardcoding https), switching to http here will cause the connection to fail unless the proxy is specifically terminating SSL/TLS.

Jason Stanko

IIUC IPPower doesn't actually use HTTPS directly when we tunnel to it via port80, we only need HTTPS when we the infra talks to it since it has to go through a HTTPS gateway.

Gerrit-Comment-Date: Mon, 20 Jul 2026 20:51:18 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Mark Yacoub <marky...@google.com>
unsatisfied_requirement
open
diffy

Otabek Kasimov (Gerrit)

unread,
Jul 21, 2026, 1:16:06 PM (yesterday) Jul 21
to Jason Stanko, Brett Brotherton, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
Attention needed from Alexandr Astrouski, Jason Stanko and Mark Yacoub

Otabek Kasimov added 3 comments

File go/src/infra/cros/cmd/paris/internal/tasks/local_recovery.go
Line 289, Patchset 16: initCtx, cancel := context.WithTimeout(ctx, 3*time.Second)
Mark Yacoub . unresolved

A 3-second timeout for establishing all host proxies might be a bit short in environments with high latency or many resources. Was this value chosen based on a specific requirement?

Jason Stanko

This is just needed because the connection is optional when running locally. Without setting a timeout it will hang for like 10 minutes until the context expires. This only initializes the local TLW client struct and attempts a single gRPC connection (it doesn't open SSH host tunnels/proxies). I bumped it up to 10 seconds though.

Otabek Kasimov

why do we set timeout for the context here?

File go/src/infra/cros/recovery/internal/execs/rpm/rpm_execs.go
Line 155, Patchset 17 (Latest):func rpmActionPasit(ctx context.Context, info execs.ExecInfo) error {
Otabek Kasimov . unresolved

can we reuse rpmPowerOnDeviceExec/rpmPowerOffDeviceExec and rpmPowerCycleDeviceExec instead of this function? i feel we need adjust the device type to include pasit devices.

File go/src/infra/cros/recovery/tlw/models.pb.go
Line 2109, Patchset 17 (Latest): Pasit_Device_VIDEO_TESTER Pasit_Device_Type = 13
Otabek Kasimov . unresolved

please extract it as separate cl.

Open in Gerrit

Related details

Attention is currently required from:
  • Alexandr Astrouski
  • Jason Stanko
  • Mark Yacoub
Submit Requirements:
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: infra/infra
Gerrit-Branch: main
Gerrit-Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
Gerrit-Change-Number: 8119539
Gerrit-PatchSet: 17
Gerrit-Owner: Jason Stanko <jst...@google.com>
Gerrit-Reviewer: Alexandr Astrouski <astr...@google.com>
Gerrit-Reviewer: Otabek Kasimov <ota...@google.com>
Gerrit-CC: Brett Brotherton <bbrot...@google.com>
Gerrit-CC: Mark Yacoub <marky...@google.com>
Gerrit-Attention: Jason Stanko <jst...@google.com>
Gerrit-Attention: Mark Yacoub <marky...@google.com>
Gerrit-Attention: Alexandr Astrouski <astr...@google.com>
Gerrit-Comment-Date: Tue, 21 Jul 2026 17:16:03 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Jason Stanko <jst...@google.com>
Comment-In-Reply-To: Mark Yacoub <marky...@google.com>
unsatisfied_requirement
open
diffy

Jason Stanko (Gerrit)

unread,
2:23 PM (7 hours ago) 2:23 PM
to Brett Brotherton, Otabek Kasimov, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
Attention needed from Alexandr Astrouski, Mark Yacoub and Otabek Kasimov

Jason Stanko added 3 comments

File go/src/infra/cros/cmd/paris/internal/tasks/local_recovery.go
Line 289, Patchset 16: initCtx, cancel := context.WithTimeout(ctx, 3*time.Second)
Mark Yacoub . unresolved

A 3-second timeout for establishing all host proxies might be a bit short in environments with high latency or many resources. Was this value chosen based on a specific requirement?

Jason Stanko

This is just needed because the connection is optional when running locally. Without setting a timeout it will hang for like 10 minutes until the context expires. This only initializes the local TLW client struct and attempts a single gRPC connection (it doesn't open SSH host tunnels/proxies). I bumped it up to 10 seconds though.

Otabek Kasimov

why do we set timeout for the context here?

Jason Stanko

Without a timeout, local CLI runs (paris local) hang indefinitely waiting for connection timeout if the lab service isn't reachable. Setting a 10s timeout fails fast so local recovery can fall back to local SSH proxies.

File go/src/infra/cros/recovery/internal/execs/rpm/rpm_execs.go
Line 155, Patchset 17:func rpmActionPasit(ctx context.Context, info execs.ExecInfo) error {
Otabek Kasimov . unresolved

can we reuse rpmPowerOnDeviceExec/rpmPowerOffDeviceExec and rpmPowerCycleDeviceExec instead of this function? i feel we need adjust the device type to include pasit devices.

Jason Stanko

`deviceHostnameAndRPMOutlet` is set up to return a single RPM outlet for a single device (like dut or chameleon).

Because PASIT is a topology of multiple peripherals (docks, USB hubs, switches), we need to power cycle all of their RPM outlets together during repair. We would need to refactor `deviceHostnameAndRPMOutlet ` to return a list rather than a single item.

File go/src/infra/cros/recovery/tlw/models.pb.go
Line 2109, Patchset 17: Pasit_Device_VIDEO_TESTER Pasit_Device_Type = 13
Otabek Kasimov . resolved

please extract it as separate cl.

Attention is currently required from:
  • Alexandr Astrouski
  • Mark Yacoub
  • Otabek Kasimov
Submit Requirements:
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: infra/infra
Gerrit-Branch: main
Gerrit-Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
Gerrit-Change-Number: 8119539
Gerrit-PatchSet: 18
Gerrit-Owner: Jason Stanko <jst...@google.com>
Gerrit-Reviewer: Alexandr Astrouski <astr...@google.com>
Gerrit-Reviewer: Otabek Kasimov <ota...@google.com>
Gerrit-CC: Brett Brotherton <bbrot...@google.com>
Gerrit-CC: Mark Yacoub <marky...@google.com>
Gerrit-Attention: Mark Yacoub <marky...@google.com>
Gerrit-Attention: Alexandr Astrouski <astr...@google.com>
Gerrit-Attention: Otabek Kasimov <ota...@google.com>
Gerrit-Comment-Date: Wed, 22 Jul 2026 18:23:36 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Jason Stanko <jst...@google.com>
Comment-In-Reply-To: Mark Yacoub <marky...@google.com>
Comment-In-Reply-To: Otabek Kasimov <ota...@google.com>
unsatisfied_requirement
open
diffy

Otabek Kasimov (Gerrit)

unread,
2:35 PM (6 hours ago) 2:35 PM
to Jason Stanko, Brett Brotherton, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
Attention needed from Alexandr Astrouski, Jason Stanko and Mark Yacoub

Otabek Kasimov added 6 comments

File go/src/infra/cros/cmd/paris/internal/tasks/local_recovery.go
File-level comment, Patchset 18 (Latest):
Otabek Kasimov . unresolved

please separate it as execs better to change sepaartely from cli changes

Line 289, Patchset 16: initCtx, cancel := context.WithTimeout(ctx, 3*time.Second)
Mark Yacoub . unresolved

A 3-second timeout for establishing all host proxies might be a bit short in environments with high latency or many resources. Was this value chosen based on a specific requirement?

Jason Stanko

This is just needed because the connection is optional when running locally. Without setting a timeout it will hang for like 10 minutes until the context expires. This only initializes the local TLW client struct and attempts a single gRPC connection (it doesn't open SSH host tunnels/proxies). I bumped it up to 10 seconds though.

Otabek Kasimov

why do we set timeout for the context here?

Jason Stanko

Without a timeout, local CLI runs (paris local) hang indefinitely waiting for connection timeout if the lab service isn't reachable. Setting a 10s timeout fails fast so local recovery can fall back to local SSH proxies.

Otabek Kasimov

Acknowledged. Please add comments to clarify the implementation and move this logic into a separate function to ensure the context is properly created and destroyed, avoiding potential misuse in the future.

File go/src/infra/cros/recovery/internal/execs/rpm/rpm_execs.go
Line 155, Patchset 17:func rpmActionPasit(ctx context.Context, info execs.ExecInfo) error {
Otabek Kasimov . unresolved

can we reuse rpmPowerOnDeviceExec/rpmPowerOffDeviceExec and rpmPowerCycleDeviceExec instead of this function? i feel we need adjust the device type to include pasit devices.

Jason Stanko

`deviceHostnameAndRPMOutlet` is set up to return a single RPM outlet for a single device (like dut or chameleon).

Because PASIT is a topology of multiple peripherals (docks, USB hubs, switches), we need to power cycle all of their RPM outlets together during repair. We would need to refactor `deviceHostnameAndRPMOutlet ` to return a list rather than a single item.

Otabek Kasimov

I approve of this change, provided that we maintain the current variety of execs. I am concerned that reducing them now could lead to further questions and issues in the future. please update if possible. it can be series of changes
1) change single to slice of rpms
2) refactor rpm_execs.go to add pasit option

File go/src/infra/cros/recovery/internal/rpm/rpm_ip9850.go
Line 85, Patchset 16: scheme = "http"
Mark Yacoub . unresolved

Why is the scheme changed to HTTP when a proxy is used?

If the proxy is a standard SSH tunnel (TCP forwarding), it will pass the data as-is. If the RPM unit expects HTTPS (as the original code implied by hardcoding https), switching to http here will cause the connection to fail unless the proxy is specifically terminating SSL/TLS.

Jason Stanko

IIUC IPPower doesn't actually use HTTPS directly when we tunnel to it via port80, we only need HTTPS when we the infra talks to it since it has to go through a HTTPS gateway.

Otabek Kasimov

i think if we do it only for local then we can use dev.IsActive(ctx) which is true when run with paris locally.

Line 112, Patchset 18 (Latest): if localproxy.IsProxyAddr(r.BaseRequest.PowerUnitHostname) {
scheme = "http"
}
Otabek Kasimov . unresolved

same here

File go/src/infra/cros/recovery/recovery.go
Line 480, Patchset 18 (Latest): if args.DevHostProxyAddresses != nil {
Otabek Kasimov . unresolved

this covered by condition already.

why we need it here if we have `collectResourcesForPlan(planName, execArgs.DUT)` below

Open in Gerrit

Related details

Attention is currently required from:
  • Alexandr Astrouski
  • Jason Stanko
  • Mark Yacoub
Submit Requirements:
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: infra/infra
Gerrit-Branch: main
Gerrit-Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
Gerrit-Change-Number: 8119539
Gerrit-PatchSet: 18
Gerrit-Owner: Jason Stanko <jst...@google.com>
Gerrit-Reviewer: Alexandr Astrouski <astr...@google.com>
Gerrit-Reviewer: Otabek Kasimov <ota...@google.com>
Gerrit-CC: Brett Brotherton <bbrot...@google.com>
Gerrit-CC: Mark Yacoub <marky...@google.com>
Gerrit-Attention: Jason Stanko <jst...@google.com>
Gerrit-Attention: Mark Yacoub <marky...@google.com>
Gerrit-Attention: Alexandr Astrouski <astr...@google.com>
Gerrit-Comment-Date: Wed, 22 Jul 2026 18:35:39 +0000
unsatisfied_requirement
open
diffy

Otabek Kasimov (Gerrit)

unread,
2:36 PM (6 hours ago) 2:36 PM
to Jason Stanko, Brett Brotherton, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
Attention needed from Alexandr Astrouski, Jason Stanko and Mark Yacoub

Otabek Kasimov added 1 comment

Patchset-level comments
Otabek Kasimov . unresolved

These changes seem problematic, as the hosts were expected to be reachable via a jump host but are currently unreachable. This is triggering numerous host connection errors due to the specific local configuration.

Gerrit-Comment-Date: Wed, 22 Jul 2026 18:36:48 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
unsatisfied_requirement
open
diffy

Jason Stanko (Gerrit)

unread,
3:53 PM (5 hours ago) 3:53 PM
to Brett Brotherton, Otabek Kasimov, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
Attention needed from Alexandr Astrouski, Mark Yacoub and Otabek Kasimov

Jason Stanko added 8 comments

Patchset-level comments
File-level comment, Patchset 16:
Mark Yacoub . resolved

is this so i can reset the UCD on repair?

Jason Stanko

Yes it will:
1. Shut off UCD via RPM
2. Reboot DUT
3. Plug UCD back in via RPM

Jason Stanko

Confirmed offline in chat with mark

Otabek Kasimov . unresolved

These changes seem problematic, as the hosts were expected to be reachable via a jump host but are currently unreachable. This is triggering numerous host connection errors due to the specific local configuration.

Jason Stanko

This is triggering numerous host connection errors due to the specific local configuration.

How did you test that so I can reproduce it?

I'm not quite sure how this would impact jump host behavior since the change should only apply when passing in the proxy cli arg.

File go/src/infra/cros/cmd/paris/internal/tasks/local_recovery.go
File-level comment, Patchset 18:
Otabek Kasimov . resolved

please separate it as execs better to change sepaartely from cli changes

Line 289, Patchset 16: initCtx, cancel := context.WithTimeout(ctx, 3*time.Second)
Mark Yacoub . resolved

A 3-second timeout for establishing all host proxies might be a bit short in environments with high latency or many resources. Was this value chosen based on a specific requirement?

Jason Stanko

This is just needed because the connection is optional when running locally. Without setting a timeout it will hang for like 10 minutes until the context expires. This only initializes the local TLW client struct and attempts a single gRPC connection (it doesn't open SSH host tunnels/proxies). I bumped it up to 10 seconds though.

Otabek Kasimov

why do we set timeout for the context here?

Jason Stanko

Without a timeout, local CLI runs (paris local) hang indefinitely waiting for connection timeout if the lab service isn't reachable. Setting a 10s timeout fails fast so local recovery can fall back to local SSH proxies.

Otabek Kasimov

Acknowledged. Please add comments to clarify the implementation and move this logic into a separate function to ensure the context is properly created and destroyed, avoiding potential misuse in the future.

File go/src/infra/cros/recovery/internal/execs/rpm/rpm_execs.go
Line 155, Patchset 17:func rpmActionPasit(ctx context.Context, info execs.ExecInfo) error {
Otabek Kasimov . resolved

can we reuse rpmPowerOnDeviceExec/rpmPowerOffDeviceExec and rpmPowerCycleDeviceExec instead of this function? i feel we need adjust the device type to include pasit devices.

Jason Stanko

`deviceHostnameAndRPMOutlet` is set up to return a single RPM outlet for a single device (like dut or chameleon).

Because PASIT is a topology of multiple peripherals (docks, USB hubs, switches), we need to power cycle all of their RPM outlets together during repair. We would need to refactor `deviceHostnameAndRPMOutlet ` to return a list rather than a single item.

Otabek Kasimov

I approve of this change, provided that we maintain the current variety of execs. I am concerned that reducing them now could lead to further questions and issues in the future. please update if possible. it can be series of changes
1) change single to slice of rpms
2) refactor rpm_execs.go to add pasit option

Jason Stanko

Done

File go/src/infra/cros/recovery/internal/rpm/rpm_ip9850.go
Line 85, Patchset 16: scheme = "http"
Mark Yacoub . resolved

Why is the scheme changed to HTTP when a proxy is used?

If the proxy is a standard SSH tunnel (TCP forwarding), it will pass the data as-is. If the RPM unit expects HTTPS (as the original code implied by hardcoding https), switching to http here will cause the connection to fail unless the proxy is specifically terminating SSL/TLS.

Jason Stanko

IIUC IPPower doesn't actually use HTTPS directly when we tunnel to it via port80, we only need HTTPS when we the infra talks to it since it has to go through a HTTPS gateway.

Otabek Kasimov

i think if we do it only for local then we can use dev.IsActive(ctx) which is true when run with paris locally.

Jason Stanko

Done

Line 112, Patchset 18: if localproxy.IsProxyAddr(r.BaseRequest.PowerUnitHostname) {
scheme = "http"
}
Otabek Kasimov . resolved

same here

Jason Stanko

Done

File go/src/infra/cros/recovery/recovery.go
Line 480, Patchset 18: if args.DevHostProxyAddresses != nil {
Otabek Kasimov . unresolved

this covered by condition already.

why we need it here if we have `collectResourcesForPlan(planName, execArgs.DUT)` below

Jason Stanko

collectResourcesForPlan only grabs main testbed devices (DUT, Servo, etc.). It doesn't include RPM or PDU IP addresses. Registering proxies upfront is the only way local RPM SSH tunnels get added to localproxy.

Open in Gerrit

Related details

Attention is currently required from:
  • Alexandr Astrouski
  • Mark Yacoub
  • Otabek Kasimov
Submit Requirements:
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: infra/infra
Gerrit-Branch: main
Gerrit-Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
Gerrit-Change-Number: 8119539
Gerrit-PatchSet: 25
Gerrit-Owner: Jason Stanko <jst...@google.com>
Gerrit-Reviewer: Alexandr Astrouski <astr...@google.com>
Gerrit-Reviewer: Otabek Kasimov <ota...@google.com>
Gerrit-CC: Brett Brotherton <bbrot...@google.com>
Gerrit-CC: Mark Yacoub <marky...@google.com>
Gerrit-Attention: Mark Yacoub <marky...@google.com>
Gerrit-Attention: Alexandr Astrouski <astr...@google.com>
Gerrit-Attention: Otabek Kasimov <ota...@google.com>
Gerrit-Comment-Date: Wed, 22 Jul 2026 19:53:38 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
unsatisfied_requirement
open
diffy

Jason Stanko (Gerrit)

unread,
4:41 PM (4 hours ago) 4:41 PM
to Brett Brotherton, Otabek Kasimov, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
Attention needed from Alexandr Astrouski, Mark Yacoub and Otabek Kasimov

Jason Stanko added 2 comments

Patchset-level comments
File-level comment, Patchset 18:
Otabek Kasimov . resolved

These changes seem problematic, as the hosts were expected to be reachable via a jump host but are currently unreachable. This is triggering numerous host connection errors due to the specific local configuration.

Jason Stanko

This is triggering numerous host connection errors due to the specific local configuration.

How did you test that so I can reproduce it?

I'm not quite sure how this would impact jump host behavior since the change should only apply when passing in the proxy cli arg.

Jason Stanko
File go/src/infra/cros/recovery/recovery.go
Line 480, Patchset 18: if args.DevHostProxyAddresses != nil {
Otabek Kasimov . resolved

this covered by condition already.

why we need it here if we have `collectResourcesForPlan(planName, execArgs.DUT)` below

Jason Stanko

collectResourcesForPlan only grabs main testbed devices (DUT, Servo, etc.). It doesn't include RPM or PDU IP addresses. Registering proxies upfront is the only way local RPM SSH tunnels get added to localproxy.

Jason Stanko

Moved all proxy code to: https://chromium-review.git.corp.google.com/c/infra/infra/+/8135044

can follow up there.

Open in Gerrit

Related details

Attention is currently required from:
  • Alexandr Astrouski
  • Mark Yacoub
  • Otabek Kasimov
Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: infra/infra
    Gerrit-Branch: main
    Gerrit-Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
    Gerrit-Change-Number: 8119539
    Gerrit-PatchSet: 28
    Gerrit-Owner: Jason Stanko <jst...@google.com>
    Gerrit-Reviewer: Alexandr Astrouski <astr...@google.com>
    Gerrit-Reviewer: Otabek Kasimov <ota...@google.com>
    Gerrit-CC: Brett Brotherton <bbrot...@google.com>
    Gerrit-CC: Mark Yacoub <marky...@google.com>
    Gerrit-Attention: Mark Yacoub <marky...@google.com>
    Gerrit-Attention: Alexandr Astrouski <astr...@google.com>
    Gerrit-Attention: Otabek Kasimov <ota...@google.com>
    Gerrit-Comment-Date: Wed, 22 Jul 2026 20:41:24 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Jason Stanko <jst...@google.com>
    Comment-In-Reply-To: Otabek Kasimov <ota...@google.com>
    unsatisfied_requirement
    open
    diffy

    Otabek Kasimov (Gerrit)

    unread,
    4:52 PM (4 hours ago) 4:52 PM
    to Jason Stanko, Brett Brotherton, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
    Attention needed from Alexandr Astrouski, Jason Stanko and Mark Yacoub

    Otabek Kasimov voted and added 1 comment

    Votes added by Otabek Kasimov

    Code-Review+1

    1 comment

    Patchset-level comments
    File-level comment, Patchset 28 (Latest):
    Otabek Kasimov . unresolved

    LGTM % please add test for new section.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Alexandr Astrouski
    • Jason Stanko
    • Mark Yacoub
    Submit Requirements:
    • requirement satisfiedCode-Owners
    • requirement satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: infra/infra
    Gerrit-Branch: main
    Gerrit-Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
    Gerrit-Change-Number: 8119539
    Gerrit-PatchSet: 28
    Gerrit-Owner: Jason Stanko <jst...@google.com>
    Gerrit-Reviewer: Alexandr Astrouski <astr...@google.com>
    Gerrit-Reviewer: Otabek Kasimov <ota...@google.com>
    Gerrit-CC: Brett Brotherton <bbrot...@google.com>
    Gerrit-CC: Mark Yacoub <marky...@google.com>
    Gerrit-Attention: Jason Stanko <jst...@google.com>
    Gerrit-Attention: Mark Yacoub <marky...@google.com>
    Gerrit-Attention: Alexandr Astrouski <astr...@google.com>
    Gerrit-Comment-Date: Wed, 22 Jul 2026 20:52:56 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Jason Stanko (Gerrit)

    unread,
    5:30 PM (4 hours ago) 5:30 PM
    to Otabek Kasimov, Brett Brotherton, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
    Attention needed from Alexandr Astrouski, Mark Yacoub and Otabek Kasimov

    Jason Stanko added 1 comment

    Patchset-level comments
    File-level comment, Patchset 28:
    Otabek Kasimov . resolved

    LGTM % please add test for new section.

    Jason Stanko

    Done. Please +1 again, lost due to new file.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Alexandr Astrouski
    • Mark Yacoub
    • Otabek Kasimov
    Submit Requirements:
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: infra/infra
    Gerrit-Branch: main
    Gerrit-Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
    Gerrit-Change-Number: 8119539
    Gerrit-PatchSet: 29
    Gerrit-Owner: Jason Stanko <jst...@google.com>
    Gerrit-Reviewer: Alexandr Astrouski <astr...@google.com>
    Gerrit-Reviewer: Otabek Kasimov <ota...@google.com>
    Gerrit-CC: Brett Brotherton <bbrot...@google.com>
    Gerrit-CC: Mark Yacoub <marky...@google.com>
    Gerrit-Attention: Mark Yacoub <marky...@google.com>
    Gerrit-Attention: Alexandr Astrouski <astr...@google.com>
    Gerrit-Attention: Otabek Kasimov <ota...@google.com>
    Gerrit-Comment-Date: Wed, 22 Jul 2026 21:30:04 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Otabek Kasimov <ota...@google.com>
    unsatisfied_requirement
    open
    diffy

    Otabek Kasimov (Gerrit)

    unread,
    5:50 PM (3 hours ago) 5:50 PM
    to Jason Stanko, Brett Brotherton, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
    Attention needed from Alexandr Astrouski, Jason Stanko and Mark Yacoub

    Otabek Kasimov voted and added 1 comment

    Votes added by Otabek Kasimov

    Code-Review+1

    1 comment

    File go/src/infra/cros/recovery/internal/execs/rpm/rpm_execs.go
    Line 244, Patchset 29 (Latest): case "pasit", "pasit_peripherals":
    Otabek Kasimov . unresolved

    q: do we need both of them? why not a single key?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Alexandr Astrouski
    • Jason Stanko
    • Mark Yacoub
    Submit Requirements:
    • requirement satisfiedCode-Owners
    • requirement satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: infra/infra
    Gerrit-Branch: main
    Gerrit-Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
    Gerrit-Change-Number: 8119539
    Gerrit-PatchSet: 29
    Gerrit-Owner: Jason Stanko <jst...@google.com>
    Gerrit-Reviewer: Alexandr Astrouski <astr...@google.com>
    Gerrit-Reviewer: Otabek Kasimov <ota...@google.com>
    Gerrit-CC: Brett Brotherton <bbrot...@google.com>
    Gerrit-CC: Mark Yacoub <marky...@google.com>
    Gerrit-Attention: Jason Stanko <jst...@google.com>
    Gerrit-Attention: Mark Yacoub <marky...@google.com>
    Gerrit-Attention: Alexandr Astrouski <astr...@google.com>
    Gerrit-Comment-Date: Wed, 22 Jul 2026 21:50:28 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Jason Stanko (Gerrit)

    unread,
    6:20 PM (3 hours ago) 6:20 PM
    to Otabek Kasimov, Brett Brotherton, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
    Attention needed from Alexandr Astrouski and Mark Yacoub

    Jason Stanko added 1 comment

    File go/src/infra/cros/recovery/internal/execs/rpm/rpm_execs.go
    Line 244, Patchset 29: case "pasit", "pasit_peripherals":
    Otabek Kasimov . resolved

    q: do we need both of them? why not a single key?

    Jason Stanko

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Alexandr Astrouski
    • Mark Yacoub
    Submit Requirements:
      • requirement satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: infra/infra
      Gerrit-Branch: main
      Gerrit-Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
      Gerrit-Change-Number: 8119539
      Gerrit-PatchSet: 30
      Gerrit-Owner: Jason Stanko <jst...@google.com>
      Gerrit-Reviewer: Alexandr Astrouski <astr...@google.com>
      Gerrit-Reviewer: Otabek Kasimov <ota...@google.com>
      Gerrit-CC: Brett Brotherton <bbrot...@google.com>
      Gerrit-CC: Mark Yacoub <marky...@google.com>
      Gerrit-Attention: Mark Yacoub <marky...@google.com>
      Gerrit-Attention: Alexandr Astrouski <astr...@google.com>
      Gerrit-Comment-Date: Wed, 22 Jul 2026 22:20:11 +0000
      satisfied_requirement
      open
      diffy

      Otabek Kasimov (Gerrit)

      unread,
      6:46 PM (2 hours ago) 6:46 PM
      to Jason Stanko, Brett Brotherton, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
      Attention needed from Alexandr Astrouski, Jason Stanko and Mark Yacoub

      Otabek Kasimov voted Code-Review+1

      Code-Review+1
      Open in Gerrit

      Related details

      Attention is currently required from:
      • Alexandr Astrouski
      • Jason Stanko
      • Mark Yacoub
      Submit Requirements:
      • requirement satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: infra/infra
      Gerrit-Branch: main
      Gerrit-Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
      Gerrit-Change-Number: 8119539
      Gerrit-PatchSet: 30
      Gerrit-Owner: Jason Stanko <jst...@google.com>
      Gerrit-Reviewer: Alexandr Astrouski <astr...@google.com>
      Gerrit-Reviewer: Otabek Kasimov <ota...@google.com>
      Gerrit-CC: Brett Brotherton <bbrot...@google.com>
      Gerrit-CC: Mark Yacoub <marky...@google.com>
      Gerrit-Attention: Jason Stanko <jst...@google.com>
      Gerrit-Attention: Mark Yacoub <marky...@google.com>
      Gerrit-Attention: Alexandr Astrouski <astr...@google.com>
      Gerrit-Comment-Date: Wed, 22 Jul 2026 22:46:17 +0000
      Gerrit-HasComments: No
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      open
      diffy

      Jason Stanko (Gerrit)

      unread,
      7:17 PM (2 hours ago) 7:17 PM
      to Otabek Kasimov, Brett Brotherton, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
      Attention needed from Alexandr Astrouski and Mark Yacoub

      Jason Stanko voted Commit-Queue+2

      Commit-Queue+2
      Open in Gerrit

      Related details

      Attention is currently required from:
      • Alexandr Astrouski
      • Mark Yacoub
      Submit Requirements:
      • requirement satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: infra/infra
      Gerrit-Branch: main
      Gerrit-Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
      Gerrit-Change-Number: 8119539
      Gerrit-PatchSet: 30
      Gerrit-Owner: Jason Stanko <jst...@google.com>
      Gerrit-Reviewer: Alexandr Astrouski <astr...@google.com>
      Gerrit-Reviewer: Jason Stanko <jst...@google.com>
      Gerrit-Reviewer: Otabek Kasimov <ota...@google.com>
      Gerrit-CC: Brett Brotherton <bbrot...@google.com>
      Gerrit-CC: Mark Yacoub <marky...@google.com>
      Gerrit-Attention: Mark Yacoub <marky...@google.com>
      Gerrit-Attention: Alexandr Astrouski <astr...@google.com>
      Gerrit-Comment-Date: Wed, 22 Jul 2026 23:17:48 +0000
      Gerrit-HasComments: No
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      open
      diffy

      Jason Stanko (Gerrit)

      unread,
      7:37 PM (1 hour ago) 7:37 PM
      to LUCI CQ, Otabek Kasimov, Brett Brotherton, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
      Gerrit-CC: Mark Yacoub <marky...@google.com>
      Gerrit-Attention: Mark Yacoub <marky...@google.com>
      Gerrit-Attention: Alexandr Astrouski <astr...@google.com>
      Gerrit-Comment-Date: Wed, 22 Jul 2026 23:36:57 +0000
      Gerrit-HasComments: No
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      open
      diffy

      Jason Stanko (Gerrit)

      unread,
      7:37 PM (1 hour ago) 7:37 PM
      to LUCI CQ, Otabek Kasimov, Brett Brotherton, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org
      Attention needed from Alexandr Astrouski and Mark Yacoub

      Jason Stanko voted Commit-Queue+2

      Commit-Queue+2
      Open in Gerrit

      Related details

      Attention is currently required from:
      • Alexandr Astrouski
      • Mark Yacoub
      Submit Requirements:
      • requirement satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: infra/infra
      Gerrit-Branch: main
      Gerrit-Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
      Gerrit-Change-Number: 8119539
      Gerrit-PatchSet: 31
      Gerrit-Owner: Jason Stanko <jst...@google.com>
      Gerrit-Reviewer: Alexandr Astrouski <astr...@google.com>
      Gerrit-Reviewer: Jason Stanko <jst...@google.com>
      Gerrit-Reviewer: Otabek Kasimov <ota...@google.com>
      Gerrit-CC: Brett Brotherton <bbrot...@google.com>
      Gerrit-CC: Mark Yacoub <marky...@google.com>
      Gerrit-Attention: Mark Yacoub <marky...@google.com>
      Gerrit-Attention: Alexandr Astrouski <astr...@google.com>
      Gerrit-Comment-Date: Wed, 22 Jul 2026 23:37:36 +0000
      Gerrit-HasComments: No
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      open
      diffy

      LUCI CQ (Gerrit)

      unread,
      7:42 PM (1 hour ago) 7:42 PM
      to Jason Stanko, Otabek Kasimov, Brett Brotherton, Alexandr Astrouski, Mark Yacoub, chromium...@chromium.org, infra-rev...@chromium.org

      LUCI CQ submitted the change

      Unreviewed changes

      30 is the latest approved patch-set.
      No files were changed between the latest approved patch-set and the submitted one.

      Change information

      Commit message:
      cros/recovery: Support RPM power cycling in PASIT

      Add support for resolution of PASIT peripheral RPM targets in getRPMTargets.

      BUG=b:536041360
      Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
      Reviewed-by: Otabek Kasimov <ota...@google.com>
      Commit-Queue: Jason Stanko <jst...@google.com>
      Cr-Commit-Position: refs/heads/main@{#82047}
      Files:
      • M go/src/infra/cros/recovery/internal/execs/rpm/rpm_execs.go
      • M go/src/infra/cros/recovery/internal/execs/rpm/rpm_execs_test.go
      Change size: M
      Delta: 2 files changed, 125 insertions(+), 9 deletions(-)
      Branch: refs/heads/main
      Submit Requirements:
      • requirement satisfiedCode-Review: +1 by Otabek Kasimov
      Open in Gerrit
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: merged
      Gerrit-Project: infra/infra
      Gerrit-Branch: main
      Gerrit-Change-Id: Iaaa5751ae89d2f76c87aad979876da5553ad89c8
      Gerrit-Change-Number: 8119539
      Gerrit-PatchSet: 32
      Gerrit-Owner: Jason Stanko <jst...@google.com>
      Gerrit-Reviewer: Alexandr Astrouski <astr...@google.com>
      Gerrit-Reviewer: Jason Stanko <jst...@google.com>
      Gerrit-Reviewer: Otabek Kasimov <ota...@google.com>
      Gerrit-CC: Brett Brotherton <bbrot...@google.com>
      open
      diffy
      satisfied_requirement
      Reply all
      Reply to author
      Forward
      0 new messages