Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
02f590e
feat(anc): extend hotfix config to base->version map (provisioning-ho…
Jun 11, 2026
798b132
test(anc): cover misconfigured hotfix map entry (value base != key) n…
Jun 12, 2026
24a12e7
fix(anc): make hotfix config read fail-open and tighten base validation
Jun 12, 2026
1a6cd97
test(anc): strengthen fail-open tests to prove config-read causation
Jun 12, 2026
9413bf9
refactor(anc): remove unused readHotfixVersion helper
Jun 12, 2026
634d462
feat(anc): extend hotfix config to base->version map (provisioning-ho…
Jun 11, 2026
82b6337
test(anc): cover misconfigured hotfix map entry (value base != key) n…
Jun 12, 2026
371eec2
fix(anc): make hotfix config read fail-open and tighten base validation
Jun 12, 2026
6eb45c1
test(anc): strengthen fail-open tests to prove config-read causation
Jun 12, 2026
061ba60
refactor(anc): remove unused readHotfixVersion helper
Jun 12, 2026
5fff98d
Merge commit '9413bf92ac200633136fa85148e33e8941ae8cac' into devinwon…
Jun 15, 2026
ac7cf45
chore(anc): replace non-ASCII chars in hotfix comments and test names
Jun 16, 2026
0d6f945
feat(anc): add check-hotfix subcommand to read hotfix pointer from LPS
Jun 12, 2026
09b8cd3
feat(anc): wire check-hotfix into node wrapper behind ANC_HOTFIX_ENABLED
Jun 15, 2026
41b325f
test(anc): note old-VHD fail-open coverage in wrapper spec
Jun 15, 2026
b5258bb
refactor(anc): rename wrapper hotfix gate to ENABLE_PROVISIONING_HOTFIX
Jun 15, 2026
abdcd9f
docs(anc): reword wrapper hotfix comment for LPS endpoint read channel
Jun 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions aks-node-controller/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,23 @@ type App struct {
eventLogger *helpers.EventLogger

// hotfixVersionPath overrides the default hotfix version file location for testing.
// It is also the path check-hotfix writes the resolved pointer to.
hotfixVersionPath string
// aptSourcesDir overrides the default APT sources directory for testing.
aptSourcesDir string
// nodeCustomDataPath overrides the default nodecustomdata path for testing.
nodeCustomDataPath string
// nodeConfigPath overrides the default AKSNodeConfig path for testing. It is the
// source for check-hotfix's LPS endpoint (apiserver FQDN + cluster CA) and the
// cold-start fallback pointer.
nodeConfigPath string
// checkHotfixFetcher overrides the real LPS hotfix-pointer GET for testing, letting
// unit tests inject a canned pointer body or errors without real networking.
checkHotfixFetcher func(ctx context.Context) ([]byte, error)
// fetchAttestedToken overrides retrieval of the IMDS attested-data token used as the
// Authorization header for the check-hotfix LPS fetch. When nil, the real IMDS endpoint
// is queried.
fetchAttestedToken func(ctx context.Context) (string, error)
}

// provision.json values are emitted as strings by the shell jq invocation.
Expand Down Expand Up @@ -137,6 +149,16 @@ func (a *App) Run(ctx context.Context, args []string) int {
return a.runDownloadHotfixCommand(ctx)
},
},
{
Name: "check-hotfix",
Usage: "Read the hotfix pointer from the live-patching-service and stage it (fail-open)",
Action: func(ctx context.Context, cmd *cli.Command) error {
if len(cmd.Args().Slice()) > 0 {
return fmt.Errorf("unexpected check-hotfix arguments: %s", strings.Join(cmd.Args().Slice(), " "))
}
return a.runCheckHotfixCommand(ctx)
},
},
},
}

Expand Down
Loading
Loading