feat(deploy): add autopilot hardware hash UX#188
Open
mchave3 wants to merge 3 commits into
Open
Conversation
There was a problem hiding this comment.
Pull request overview
Adds Foundry Deploy wizard UX and view-model support for the Autopilot hardware hash upload provisioning mode, including tenant/certificate readiness details and per-deployment group tag selection, while updating the current runtime boundary to skip (not fail) hardware-hash execution until the runtime phases are implemented.
Changes:
- Extended
DeploymentPreparationViewModeland wizard views to surface hardware-hash readiness metadata and group tag selection/effective group tag summary. - Updated deployment launch request building to carry the effective group tag into the deployment context, and updated summary bindings accordingly.
- Adjusted deployment execution boundary/guards so hardware-hash mode is non-blocking (skipped pre-runtime), with updated tests and localized strings.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Foundry.Deploy/Views/Wizard/TargetStepView.xaml | Adds tenant/certificate readiness display, warnings, and group tag selection controls for hardware-hash mode. |
| src/Foundry.Deploy/Views/Wizard/SummaryStepView.xaml | Adds summary display for effective Autopilot group tag in hardware-hash mode. |
| src/Foundry.Deploy/ViewModels/MainWindowViewModel.cs | Exposes SummaryAutopilotGroupTagText and passes launch-time hardware hash settings via helper. |
| src/Foundry.Deploy/ViewModels/DeploymentPreparationViewModel.cs | Adds readiness/group tag state + launch helper for effective group tag handling. |
| src/Foundry.Deploy/Strings/en-US/Resources.resx | Adds/updates localized strings for readiness, warnings, and group tag UX. |
| src/Foundry.Deploy/Strings/fr-FR/Resources.resx | Adds/updates French localized strings for readiness, warnings, and group tag UX. |
| src/Foundry.Deploy/Services/Deployment/Steps/StageAutopilotConfigurationStep.cs | Changes live hardware-hash behavior from failing to skipping (incl. expired-certificate skip messaging). |
| src/Foundry.Deploy/Services/Deployment/DeploymentLaunchPreparationService.cs | Removes the pre-runtime “hardware hash not available” launch guard so deployment can proceed. |
| src/Foundry.Deploy/Services/Deployment/DeploymentContext.cs | Updates XML docs to reflect provisioning-method semantics and group tag override carriage. |
| src/Foundry.Deploy.Tests/StageAutopilotConfigurationStepTests.cs | Updates expectations to skipped behavior and adds expired-certificate coverage. |
| src/Foundry.Deploy.Tests/DeploymentPreparationViewModelTests.cs | Adds coverage for readiness/group tag state + effective group tag launch settings behavior. |
| src/Foundry.Deploy.Tests/DeploymentLaunchPreparationServiceTests.cs | Updates coverage so hardware-hash mode no longer fails launch preparation. |
| docs/implementation/autopilot-hash-upload/05-implementation-phases.md | Marks Phase 3 checklist/test items as completed and updates notes. |
Comments suppressed due to low confidence (1)
src/Foundry.Deploy/Views/Wizard/SummaryStepView.xaml:187
- This value TextBlock also uses Grid.Row="8" even though the grid only defines rows through index 6. Set it to row 6 so it lines up with the label and stays within the defined row set.
<TextBlock
Grid.Row="8"
Grid.Column="2"
Text="{Binding SummaryAutopilotGroupTagText}"
TextWrapping="Wrap"
Visibility="{Binding Preparation.IsHardwareHashGroupTagControlsVisible, Converter={StaticResource BooleanToVisibilityConverter}}" />
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
41
to
+45
| <RowDefinition Height="Auto" /> | ||
| <RowDefinition Height="8" /> | ||
| <RowDefinition Height="Auto" /> | ||
| <RowDefinition Height="8" /> | ||
| <RowDefinition Height="Auto" /> |
Comment on lines
+177
to
+181
| <TextBlock | ||
| Grid.Row="8" | ||
| Style="{StaticResource BodyStrongTextBlockStyle}" | ||
| Text="{Binding Strings[Summary.AutopilotGroupTag]}" | ||
| Visibility="{Binding Preparation.IsHardwareHashGroupTagControlsVisible, Converter={StaticResource BooleanToVisibilityConverter}}" /> |
Comment on lines
+150
to
+152
| public string EffectiveHardwareHashGroupTagText => string.IsNullOrWhiteSpace(ResolveEffectiveHardwareHashGroupTag()) | ||
| ? GetString("Common.None") | ||
| : ResolveEffectiveHardwareHashGroupTag()!; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Reason
Phase 3 focuses on Foundry Deploy UX after the OSD-side Autopilot hardware hash onboarding UX was completed in Phase 2. Deploy needs to clearly show the selected Autopilot mode, let the operator choose the group tag behavior for this deployment, and avoid blocking OS deployment before the upload runtime exists.
Main changes
DeploymentPreparationViewModelwith hardware hash readiness, certificate metadata, and effective group tag state.Testing
dotnet test .\src\Foundry.Deploy.Tests\Foundry.Deploy.Tests.csproj --filter "DeploymentPreparationViewModelTests|DeploymentLaunchPreparationServiceTests|StageAutopilotConfigurationStepTests"passed: 25 tests, 0 failures.dotnet test .\src\Foundry.Deploy.Tests\Foundry.Deploy.Tests.csprojpassed: 154 tests, 0 failures.Notes