Conversation
Add TEST_CLUSTER_VIRTUAL_MACHINE_CLASS_NAME (default generic) as spec.virtualMachineClassName for VMs created on the base cluster. If set to a name other than generic, it must be a valid Kubernetes DNS-1123 label (suitable for VirtualMachineClass metadata.name). When that VirtualMachineClass does not exist, create it by cloning the built-in generic class with spec.cpu.type Host; label storage-e2e.deckhouse.io/auto-created=true. Such classes are not deleted during e2e cleanup. Documentation, env dumps, glossary, and VirtualMachineClass client updated. Remove trailing periods from fmt.Errorf strings and use semicolons with lowercase continuations so error text does not end with punctuation. Signed-off-by: Pavel Karpov <pavel.karpov@flant.com>
41a041d to
3e49daa
Compare
szhem
reviewed
May 6, 2026
…ction-config dhctl now resolves SSH via lib-connection ExtractConfig early (deckhouse#19063), so SSH_AUTH_SOCK-only auth fails. Bind-mount the setup-node key and pass --ssh-agent-private-keys. When SSH_PASSPHRASE is set, upload dhctl SSHConfig+SSHHost YAML with embedded key and passphrase; use --connection-config only (dhctl disallows mixing with --ssh-*). Signed-off-by: Pavel Karpov <pavel.karpov@flant.com>
…nfig errors Do not append Exec combined output when cat of the remote private key fails. Probe readability with test -r first so permission/path issues surface without reading key material into logs. Signed-off-by: Pavel Karpov <pavel.karpov@flant.com>
Store the YAML under ~/.config/storage-e2e (0700) via mktemp, chmod 600 the file, and remove it right after docker run (plus cleanup on earlier failures) instead of deferring removal until BootstrapCluster returns. Signed-off-by: Pavel Karpov <pavel.karpov@flant.com>
…ction-config) - Add UploadPrivate: chmod remote path via SFTP right after Create and before copyWithContext, so defaults like 0644 do not apply during payload transfer (CWE-732 / review feedback). - Refactor direct/jump SFTP upload retries around uploadOverSFTPOnce. - BootstrapCluster passphrase branch: use UploadPrivate(0600), drop separate Exec chmod; stage ~/.config/storage-e2e with install -d -m 0700. - ARCHITECTURE: mention UploadPrivate under ssh responsibilities. Signed-off-by: Pavel Karpov <pavel.karpov@flant.com>
…eric with Host CPU Signed-off-by: Pavel Karpov <pavel.karpov@flant.com>
Signed-off-by: Pavel Karpov <pavel.karpov@flant.com>
…t if missing Signed-off-by: Pavel Karpov <pavel.karpov@flant.com>
7bb5c3e to
12be30a
Compare
szhem
approved these changes
May 7, 2026
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
VirtualMachineClass on the base cluster
TEST_CLUSTER_VIRTUAL_MACHINE_CLASS_NAMEso tests can setVirtualMachine.spec.virtualMachineClassNamefor VMs created on the base cluster inalwaysCreateNewflow (defaultgeneric).VirtualMachineClassdoes not exist, the framework creates it by cloning spec from built-ingenericand setsspec.cpu.typetoHost. The resource is labeledstorage-e2e.deckhouse.io/auto-created=trueand is not removed during e2e cleanup (manual cleanup if needed).v1alpha3(github.com/deckhouse/virtualization/apiv1.8.0): scheme registration andVirtualMachineClassclient/helpers usev1alpha3(correct Host CPU / discovery typing).Dhctl bootstrap SSH (follow-up to deckhouse#19063)
Dhctl resolves SSH via lib-connection
ExtractConfigearly in bootstrap; mounting onlySSH_AUTH_SOCKno longer works reliably (deckhouse/deckhouse#19063).SSH_PASSPHRASE: bind-mount the setup-node private key (already uploaded byUploadBootstrapFiles) into the install image at/root/.ssh/id_rsaand pass--ssh-agent-private-keys(alongside existing--ssh-host/--ssh-user).SSH_PASSPHRASE: generate dhctl connection-config (SSHConfig+SSHHost,dhctl.deckhouse.io/v1) with inline PEM + passphrase, upload to the setup node, rundhctl bootstrap --connection-config=...only (dhctl forbids mixing--connection-configwith other--ssh-*flags).Misc
ValidateEnvironmenterror strings aligned with staticcheck ST1005 (no trailing punctuation).Environment variables
TEST_CLUSTER_VIRTUAL_MACHINE_CLASS_NAMEgenericgeneric. Other values must be a valid Kubernetes DNS-1123 subdomain name.SSH_PASSPHRASEDocumentation
README.md,docs/ARCHITECTURE.md— VM class var + cleanup note; relevant env/bootstrap notes where applicabledocs/FUNCTIONS_GLOSSARY.md—CreateVirtualMachines(VM class ensure path)docs/WORKLOG.md— entries for VM class work and bootstrap SSH changes