Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce InstanceTypes #403

Merged
merged 8 commits into from
Oct 16, 2024
Merged

Introduce InstanceTypes #403

merged 8 commits into from
Oct 16, 2024

Conversation

kvaps
Copy link
Member

@kvaps kvaps commented Oct 8, 2024

This PR introduces the default instancetypes:

  • cx1.2xlarge
  • cx1.4xlarge
  • cx1.8xlarge
  • cx1.large
  • cx1.medium
  • cx1.xlarge
  • gn1.2xlarge
  • gn1.4xlarge
  • gn1.8xlarge
  • gn1.xlarge
  • m1.2xlarge
  • m1.4xlarge
  • m1.8xlarge
  • m1.large
  • m1.xlarge
  • n1.2xlarge
  • n1.4xlarge
  • n1.8xlarge
  • n1.large
  • n1.medium
  • n1.xlarge
  • o1.2xlarge
  • o1.4xlarge
  • o1.8xlarge
  • o1.large
  • o1.medium
  • o1.micro
  • o1.nano
  • o1.small
  • o1.xlarge
  • rt1.2xlarge
  • rt1.4xlarge
  • rt1.8xlarge
  • rt1.large
  • rt1.medium
  • rt1.micro
  • rt1.small
  • rt1.xlarge
  • u1.2xlarge
  • u1.2xmedium
  • u1.4xlarge
  • u1.8xlarge
  • u1.large
  • u1.medium
  • u1.micro
  • u1.nano
  • u1.small
  • u1.xlarge

And the following profiles:

  • alpine
  • centos.7
  • centos.7.desktop
  • centos.stream10
  • centos.stream10.desktop
  • centos.stream8
  • centos.stream8.desktop
  • centos.stream8.dpdk
  • centos.stream9
  • centos.stream9.desktop
  • centos.stream9.dpdk
  • cirros
  • fedora
  • fedora.arm64
  • opensuse.leap
  • opensuse.tumbleweed
  • rhel.10
  • rhel.10.arm64
  • rhel.7
  • rhel.7.desktop
  • rhel.8
  • rhel.8.desktop
  • rhel.8.dpdk
  • rhel.9
  • rhel.9.arm64
  • rhel.9.desktop
  • rhel.9.dpdk
  • rhel.9.realtime
  • sles
  • ubuntu
  • windows.10
  • windows.10.virtio
  • windows.11
  • windows.11.virtio
  • windows.2k16
  • windows.2k16.virtio
  • windows.2k19
  • windows.2k19.virtio
  • windows.2k22
  • windows.2k22.virtio
  • windows.2k25
  • windows.2k25.virtio

as part of #258

Summary by CodeRabbit

  • New Features

    • Introduced new instance types and preferences for Virtual Machines.
    • Added new sections in the documentation for better clarity on series and parameters.
    • Enhanced resource management with new fields for CPU and memory specifications.
    • New release added for kubevirt-common-instancetypes.
    • Added a new chart for vm-disk with detailed deployment instructions.
    • New vm-instance chart introduced with comprehensive deployment details.
    • New resources for managing virtual machine disks and resizing PVCs.
    • Added support for conditional checks in templates for better configuration management.
  • Bug Fixes

    • Corrected indentation issues in configuration files.
  • Documentation

    • Updated README files with new parameters and sections for improved user guidance.
  • Chores

    • Version updates across various components to ensure compatibility and access to the latest features.

@kvaps kvaps marked this pull request as draft October 8, 2024 14:38
Copy link
Contributor

coderabbitai bot commented Oct 8, 2024

Caution

Review failed

The pull request is closed.

Walkthrough

The pull request includes multiple updates across various packages, primarily focusing on version increments for Kubernetes and virtual-machine components. Significant changes encompass the addition of new sections in README files, modifications to YAML configurations introducing new parameters and fields, and the creation of new charts for kubevirt-common-instancetypes and vm-disk. Additionally, several properties in configuration files have been updated or removed to improve resource management.

Changes

File Path Change Summary
packages/apps/kubernetes/Chart.yaml Version updated from 0.12.0 to 0.13.0.
packages/apps/kubernetes/README.md Section renamed and multiple new sections added for various series.
packages/apps/kubernetes/templates/cluster.yaml New fields (instancetype, cpu, memory) and annotations added in MachineDeployment.
packages/apps/kubernetes/values.yaml Parameter resources updated; removed cpu and memory, added instanceType and new resources.
packages/apps/versions_map Multiple version updates for Kubernetes, virtual-machine, and MySQL components.
packages/apps/virtual-machine/Chart.yaml Version updated from 0.4.0 to 0.5.0.
packages/apps/virtual-machine/README.md New parameters added and existing parameters modified.
packages/apps/virtual-machine/hack/update-instance-types.sh New file created.
packages/apps/virtual-machine/templates/vm.yaml New conditional checks and fields added, with updates to storage handling.
packages/apps/virtual-machine/values.schema.json Property renamed and new properties added; existing properties updated.
packages/apps/virtual-machine/values.yaml Parameters removed, added, and modified for instance types and resources.
packages/system/kubevirt-common-instancetypes/Chart.yaml New chart added with apiVersion: v2.
packages/system/kubevirt-common-instancetypes/Makefile Variables added for namespace and name.
packages/system/kubevirt-common-instancetypes/templates/instancetypes.yaml New instance types added.
packages/system/kubevirt-common-instancetypes/templates/preferences.yaml New resources added for various operating systems.
packages/system/kubevirt-common-instancetypes/values.yaml New file created.
packages/apps/vm-disk/Chart.yaml New chart added with apiVersion: v2, name: vm-disk, and version 0.1.0.
packages/apps/vm-disk/Makefile New target added for README generation.
packages/apps/vm-disk/README.md Detailed README document outlining deployment details and parameters.
packages/apps/vm-disk/hack/update-instance-types.sh New file created.
packages/apps/vm-disk/templates/NOTES.txt Conditional section added for disk image upload instructions.
packages/apps/vm-disk/templates/dashboard-resourcemap.yaml Role added for managing access control.
packages/apps/vm-disk/templates/dv.yaml New resource defined for KubeVirt and CDI.
packages/apps/vm-disk/templates/pvc-resize-hook.yaml Job and ServiceAccount added for resizing PVCs.
packages/apps/vm-disk/values.schema.json New schema added for defining chart values related to VM disk configurations.
packages/apps/vm-disk/values.yaml New section and parameters added for common configurations.
packages/apps/vm-instance/.helmignore New file created specifying paths to ignore during Helm packaging.
packages/apps/vm-instance/Chart.yaml Version updated from 0.4.0 to 0.1.0 and name changed to vm-instance.
packages/apps/vm-instance/Makefile New target added for README generation.
packages/apps/vm-instance/README.md Detailed README file explaining function and deployment details.
packages/apps/vm-instance/hack/update-instance-types.sh New file created.
packages/apps/vm-instance/templates/vm.yaml New template added with validation checks for instance types and profiles.
packages/apps/vm-instance/values.schema.json New schema added for defining chart values related to VM instances.
packages/apps/vm-instance/values.yaml Parameters removed, added, and modified for instance types and resources.
packages/core/platform/bundles/paas-full.yaml New release added for kubevirt-instancetypes with dependencies on various components.
packages/system/kubevirt-instancetypes/Chart.yaml New Helm chart file added for cozy-kubevirt-instancetypes.
packages/system/kubevirt-instancetypes/Makefile New Makefile for managing KubeVirt instance types with variables: NAME and NAMESPACE.
packages/system/kubevirt-instancetypes/templates/instancetypes.yaml New YAML configuration defining multiple VirtualMachineClusterInstancetype resources.
packages/system/kubevirt-instancetypes/templates/preferences.yaml New YAML configuration defining VirtualMachineClusterPreference resources.
packages/system/kubevirt-instancetypes/values.yaml New file created.

Possibly related PRs

  • Introduce InstanceTypes #403: This PR introduces instance types and profiles that are directly related to the changes made in the main PR, which also includes updates to the Chart.yaml, cluster.yaml, and values.yaml files for Kubernetes applications, specifically focusing on instance types and resource specifications.

🐰 In the meadow, changes bloom,
New versions rise, dispelling gloom.
With parameters fresh and bright,
Our Kubernetes takes flight!
Virtual machines, now more refined,
In cozy charts, new paths we find.
Hooray for updates, let joy abound! 🌼


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@kvaps kvaps force-pushed the instance-types branch 3 times, most recently from 41cf90b to 7f623c5 Compare October 10, 2024 10:14
@kvaps kvaps marked this pull request as ready for review October 10, 2024 10:15
@kvaps kvaps force-pushed the instance-types branch 2 times, most recently from be8396d to 54645c0 Compare October 10, 2024 10:35
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🧹 Outside diff range and nitpick comments (29)
packages/system/kubevirt-common-instancetypes/Makefile (1)

6-12: LGTM with suggestions: Update target is well-structured.

The update target effectively generates and customizes instance types and preferences. The use of kustomize and yq for YAML manipulation is sophisticated and appropriate.

Suggestions for improvement:

  1. Consider adding error checking for the kustomize and yq commands.
  2. Add comments explaining the purpose of filtering out specific kinds.
  3. Consider parameterizing the GitHub repository URL for easier maintenance.

Here's a suggested refactor incorporating these improvements:

REPO_URL := https://github.com/kubevirt/common-instancetypes

update:
	rm -rf templates
	mkdir templates
	# Generate preferences, excluding VirtualMachinePreference kind
	kustomize build $(REPO_URL)/preferences > templates/preferences.yaml || (echo "Error generating preferences"; exit 1)
	yq -i 'select(.kind != "VirtualMachinePreference")' templates/preferences.yaml || (echo "Error filtering preferences"; exit 1)
	# Generate instance types, excluding VirtualMachineInstancetype kind
	kustomize build $(REPO_URL)/instancetypes > templates/instancetypes.yaml || (echo "Error generating instance types"; exit 1)
	yq -i 'select(.kind != "VirtualMachineInstancetype")' templates/instancetypes.yaml || (echo "Error filtering instance types"; exit 1)
packages/apps/virtual-machine/values.yaml (3)

12-16: LGTM: Instance type and profile parameters added

The 'instanceType' and 'instanceProfile' parameters have been correctly added, aligning with the PR objectives. The default values are appropriate.

Consider enhancing the documentation by providing examples of other available instance types and profiles, as mentioned in the PR objectives. This could help users understand the range of options available.


27-31: LGTM: 'resources' section updated, consider adding clarification

The 'resources' section has been appropriately updated, removing specific values for 'cpu' and 'memory'. This change is consistent with the introduction of the 'instanceType' parameter.

Consider adding a comment explaining that these values are determined by the selected 'instanceType'. This would provide clarity to users about how these resources are allocated.


21-21: Minor: Remove trailing spaces

There are trailing spaces on this line. While this doesn't affect functionality, it's good practice to remove them for consistency and to avoid potential issues in some systems.

Please remove the trailing spaces from this line.

🧰 Tools
🪛 yamllint

[error] 21-21: trailing spaces

(trailing-spaces)

packages/apps/versions_map (1)

38-38: Consider updating kubernetes 0.13.0 to a specific commit hash

While version 0.12.0 has been updated to a specific commit hash, version 0.13.0 is still set to HEAD. For consistency and better version control, consider updating this to a specific commit hash as well.

packages/apps/virtual-machine/templates/vm.yaml (4)

1-6: Excellent addition of existence checks for instanceType and instanceProfile.

These checks will prevent the creation of VMs with non-existent instance types or profiles, improving error handling and user experience. The error messages are clear and informative.

For consistency, consider using string interpolation for both error messages:

-{{-   fail (printf "Specified instancetype not exists in cluster: %s" .Values.instanceType) }}
+{{-   fail (printf "Specified instanceType does not exist in cluster: %s" .Values.instanceType) }}
-{{-   fail (printf "Specified profile not exists in cluster: %s" .Values.instanceProfile) }}
+{{-   fail (printf "Specified instanceProfile does not exist in cluster: %s" .Values.instanceProfile) }}
🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)


41-46: Enhanced flexibility in disk source configuration.

The updated disk source handling allows for either a dynamic URL or a blank disk, providing more flexibility in VM image sourcing. The fallback to a blank disk when no origin is specified is a good default behavior.

For improved clarity, consider adding a comment explaining the purpose of the blank disk fallback:

{{- if $.Values.systemDisk.origin }}
http:
  url: {{ $.Values.systemDisk.origin }}
{{- else }}
# Fallback to a blank disk if no origin is specified
blank: {}
{{- end }}

60-64: Well-implemented conditional memory resource allocation.

The conditional inclusion of memory requests based on .Values.resources.memory provides flexibility in resource allocation, similar to the CPU resources. This is a good practice for managing Kubernetes resources efficiently.

For consistency with the CPU resources section, consider restructuring the memory resources as follows:

{{- if and .Values.resources .Values.resources.memory }}
resources:
  requests:
    memory: {{ .Values.resources.memory | quote }}
{{- end }}

This structure aligns more closely with the CPU resources section and may improve readability.


1-1: Address yamllint false positive.

The yamllint error on line 1 is a false positive due to the Go template directives at the beginning of the file. YAML linters often struggle with template languages mixed with YAML.

To suppress this false positive, you can add a # yamllint disable directive at the beginning of the file:

# yamllint disable
{{- if and .Values.instanceType (not (lookup "instancetype.kubevirt.io/v1beta1" "VirtualMachineClusterInstancetype" "" .Values.instanceType)) }}
# ... rest of the file

This will prevent yamllint from reporting errors on the template directives while still linting the rest of the YAML content.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

packages/apps/virtual-machine/values.schema.json (2)

23-78: LGTM! Consider removing the empty string option.

The new instanceType property is well-structured and provides a comprehensive list of instance types. This change enhances the configurability of virtual machine instances.

Consider removing the empty string option (line 77) from the enum list, as it might lead to unexpected behavior if selected.


80-130: LGTM! Fix typo and consider removing empty string option.

The new instanceProfile property is well-structured and provides a comprehensive list of OS profiles, enhancing the flexibility of virtual machine configurations.

  1. Fix the typo in the description: "prefferences" should be "preferences".
  2. Consider removing the empty string option (line 128) from the enum list, as it might lead to unexpected behavior if selected.
packages/core/platform/bundles/paas-full.yaml (1)

82-86: LGTM! New release entry for kubevirt-common-instancetypes added correctly.

The new release entry for kubevirt-common-instancetypes is well-structured and placed logically within the file. It correctly depends on the necessary components (cilium, kubeovn, kubevirt-operator, and kubevirt).

Consider adding spaces after the commas in the dependsOn list for better readability:

dependsOn: [cilium, kubeovn, kubevirt-operator, kubevirt]
🧰 Tools
🪛 yamllint

[warning] 86-86: too few spaces after comma

(commas)


[warning] 86-86: too few spaces after comma

(commas)


[warning] 86-86: too few spaces after comma

(commas)

packages/apps/kubernetes/README.md (2)

46-64: Improve clarity and conciseness in the U Series section.

The U Series section provides valuable information, but some sentences can be improved for clarity and conciseness. Consider the following suggestions:

  1. Line 48-49: Combine these lines into a single, more concise sentence:
    "The U Series provides resources for general-purpose applications."

  2. Line 51-52: Simplify to:
    "U stands for "Universal", indicating its suitability for various workloads."

  3. Lines 60-62: Remove the comma before "if" and consider rephrasing for clarity:
    "- Burstable CPU performance - The workload has a baseline compute performance but can burst beyond this baseline if excess compute resources are available."

  4. Lines 63-64: Rephrase for clarity:
    "- vCPU-To-Memory Ratio (1:4) - A vCPU-to-Memory ratio of 1:4, providing balanced resources for general-purpose workloads."

These changes will improve readability while maintaining the informative nature of the section.

🧰 Tools
🪛 LanguageTool

[typographical] ~61-~61: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


66-152: Enhance consistency and clarity across all series sections.

The O, CX, M, and RT Series sections provide valuable information, but there are opportunities for improvement in consistency and clarity. Consider applying the following suggestions across all series sections:

  1. Remove commas before "if" in sentences describing burstable CPU performance.
  2. Replace "in order to" with "to" for conciseness.
  3. Standardize the format of the "vCPU-To-Memory Ratio" explanation.
  4. Ensure consistent capitalization of terms like "vCPU" and "NUMA".

Example improvements for the CX Series:

## CX Series

The CX Series provides exclusive compute resources for compute-intensive applications.

*CX* stands for "Compute Exclusive".

Exclusive resources are given to the compute threads of the VM. To ensure this, some additional cores (depending on the number of disks and NICs) will be requested to offload the I/O threading from cores dedicated to the workload. Additionally, in this series, the NUMA topology of the used cores is provided to the VM.

### CX Series Characteristics

Specific characteristics of this series are:
- *Hugepages* - Hugepages are used to improve memory performance.
- *Dedicated CPU* - Physical cores are exclusively assigned to every vCPU to provide fixed and high compute guarantees to the workload.
- *Isolated emulator threads* - Hypervisor emulator threads are isolated from the vCPUs to reduce emulation-related impact on the workload.
- *vNUMA* - Physical NUMA topology is reflected in the guest to optimize guest-sided cache utilization.
- *vCPU-To-Memory Ratio (1:2)* - A vCPU-to-Memory ratio of 1:2, providing balanced resources for compute-intensive workloads.

Apply similar improvements to the O, M, and RT Series sections for consistency.

🧰 Tools
🪛 LanguageTool

[typographical] ~77-~77: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~79-~79: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~92-~92: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~101-~101: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~104-~104: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~107-~107: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~109-~109: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~123-~123: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~126-~126: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~143-~143: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~146-~146: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~149-~149: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)

packages/apps/kubernetes/templates/cluster.yaml (3)

34-39: LGTM: CPU configuration enhances resource control.

The conditional CPU configuration is a good addition, allowing for more granular control over CPU allocation. It's correctly implemented to only apply when explicitly defined in the group resources.

Consider adding a comment explaining the rationale behind setting threads and sockets to 1 while making cores configurable. This would enhance code readability and maintainability.


188-194: LGTM: Instance type validation enhances configuration reliability.

The lookup and validation of the specified instance type is a crucial addition. It ensures that only valid instance types are used in the configuration, preventing potential issues down the line.

Consider wrapping the error message in quotes to ensure it's always interpreted as a string, especially if the instance type name contains special characters:

- {{-     fail (printf "Specified instancetype not exists in cluster: %s" $group.instanceType) }}
+ {{-     fail (printf "Specified instancetype not exists in cluster: '%s'" $group.instanceType) }}

204-213: LGTM: Cluster autoscaler annotations enhance resource management.

The addition of memory and CPU capacity annotations for the cluster autoscaler is a valuable improvement. It enables the autoscaler to make informed decisions about scaling based on either explicitly defined resources or instance type specifications.

For consistency, consider using the same indentation for both the if and else blocks:

    {{- if and $group.resources $group.resources.memory }}
    capacity.cluster-autoscaler.kubernetes.io/memory: "{{ $group.resources.memory }}"
    {{- else }}
-    capacity.cluster-autoscaler.kubernetes.io/memory: "{{ $instanceType.spec.memory.guest }}"
+    capacity.cluster-autoscaler.kubernetes.io/memory: "{{ $instanceType.spec.memory.guest }}"
    {{- end }}
    {{- if and $group.resources $group.resources.cpu }}
    capacity.cluster-autoscaler.kubernetes.io/cpu: "{{ $group.resources.cpu }}"
    {{- else }}
-    capacity.cluster-autoscaler.kubernetes.io/cpu: "{{ $instanceType.spec.cpu.guest }}"
+    capacity.cluster-autoscaler.kubernetes.io/cpu: "{{ $instanceType.spec.cpu.guest }}"
    {{- end }}
packages/apps/virtual-machine/README.md (3)

39-52: LGTM! Consider adding more details to new parameters.

The expanded parameters table is a great addition, providing more configuration options for users. The new parameters (instanceType, instanceProfile, and systemDisk.origin) and the modifications to existing ones (resources.cpu and resources.memory) offer more flexibility in VM configuration.

Consider adding brief explanations or examples for the new parameters to help users understand their purpose and usage better. For instance:

  • instanceType: Explain the naming convention (e.g., "u1.medium") and how it relates to the instance types listed later in the document.
  • instanceProfile: Clarify how this relates to the "preference resources" listed at the end of the document.
  • systemDisk.origin: Provide an example of a valid HTTP URL for the source image.
🧰 Tools
🪛 LanguageTool

[style] ~51-~51: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. | `[...

(MISSING_IT_THERE)

🪛 Markdownlint

52-52: Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


55-161: Excellent addition of VM series descriptions!

The detailed descriptions of the U, O, CX, M, and RT series provide valuable information to users, helping them make informed decisions about which instance type to choose. The characteristics of each series are well-explained and highlight the specific use cases they are designed for.

For consistency, consider adding a brief explanation of what "GN Series" and "N1 Series" stand for and their characteristics, as they are included in the instance types table but not described in the series descriptions.

🧰 Tools
🪛 LanguageTool

[typographical] ~70-~70: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~86-~86: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~88-~88: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~101-~101: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~110-~110: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~113-~113: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~116-~116: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~118-~118: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~132-~132: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~135-~135: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~152-~152: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~155-~155: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~158-~158: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


Line range hint 1-268: Minor formatting and style improvements

To further enhance the readability and consistency of the document, consider the following minor improvements:

  1. Line 51: Add "It" at the beginning of the sentence to form a complete sentence: "It can be a single key or a list of keys."
  2. Lines 70, 86, 135: Remove the comma before "if" in the phrase "baseline, if excess compute resources are available."
  3. Consider rephrasing sentences using "in order to" to make them more concise. For example:
    • Line 88: "Memory is over-committed to achieve a higher workload density."
    • Line 110: "Hugepages are used to improve memory performance."
    • Line 118: "Physical NUMA topology is reflected in the guest to optimize guest-sided cache utilization."

These changes will improve the overall flow and consistency of the document.

🧰 Tools
🪛 LanguageTool

[style] ~51-~51: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. | `[...

(MISSING_IT_THERE)


[typographical] ~70-~70: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~86-~86: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~88-~88: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~101-~101: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~110-~110: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~113-~113: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~116-~116: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~118-~118: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~132-~132: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~135-~135: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~152-~152: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~155-~155: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~158-~158: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)

🪛 Markdownlint

52-52: Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


53-53: Expected: leading_and_trailing; Actual: trailing_only; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


267-267: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


267-267: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


268-268: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


268-268: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


53-53: Expected: 3; Actual: 1; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)

packages/system/kubevirt-common-instancetypes/templates/preferences.yaml (6)

53-82: LGTM with suggestion: Review resource requirements for CentOS 7 Desktop

The VirtualMachineClusterPreference for CentOS 7 Desktop is well-configured overall:

  • Correctly marked as deprecated.
  • Appropriate desktop-specific configurations (autoattach input device, tablet input type).
  • Consistent use of virtio for disk and interface models.

However, consider reviewing the resource requirements:

The current resource allocation (1 CPU, 1Gi memory) might be insufficient for a smooth desktop experience. Consider increasing these requirements, especially the memory, for better performance in a graphical environment. A suggested starting point could be:

  requirements:
    cpu:
      guest: 2
    memory:
      guest: 2Gi

111-141: LGTM with suggestion: Review resource requirements for CentOS Stream 10 Desktop

The VirtualMachineClusterPreference for CentOS Stream 10 Desktop is well-configured:

  • Appropriate desktop-specific configurations (autoattach input device, tablet input type).
  • Maintains performance improvements like dedicated I/O thread and RNG device.
  • Consistent use of virtio for disk and interface models.

However, similar to the CentOS 7 Desktop configuration:

Consider reviewing the resource requirements. The current allocation (1 CPU, 1.5Gi memory) might be insufficient for a smooth desktop experience on a modern OS like CentOS Stream 10. A suggested improvement could be:

  requirements:
    cpu:
      guest: 2
    memory:
      guest: 4Gi

This increase would better accommodate the needs of a graphical environment and modern applications.


169-198: LGTM with suggestion: Review resource requirements for deprecated CentOS Stream 8 Desktop

The VirtualMachineClusterPreference for CentOS Stream 8 Desktop is appropriately configured:

  • Correctly marked as deprecated.
  • Includes proper desktop-specific configurations (autoattach input device, tablet input type).
  • Consistent use of virtio for disk and interface models.

However, two points to consider:

  1. Resource Requirements: The current allocation (1 CPU, 1.5Gi memory) might be insufficient for a smooth desktop experience. Consider increasing these, especially for a desktop environment:
  requirements:
    cpu:
      guest: 2
    memory:
      guest: 4Gi
  1. Deprecated Status: Ensure that users are clearly informed about the deprecated status of this OS version when they attempt to use this preference.

260-290: LGTM with suggestion: Review resource requirements for CentOS Stream 9 Desktop

The VirtualMachineClusterPreference for CentOS Stream 9 Desktop is well-configured:

  • Includes appropriate desktop-specific configurations (autoattach input device, tablet input type).
  • Maintains modern features like dedicated I/O thread and RNG device.
  • Consistent use of virtio for disk and interface models.

However, one point to consider:

Resource Requirements: The current allocation (1 CPU, 1.5Gi memory) might be insufficient for a smooth desktop experience on CentOS Stream 9. Consider increasing these requirements for better performance in a graphical environment. A suggested improvement could be:

  requirements:
    cpu:
      guest: 2
    memory:
      guest: 4Gi

This increase would better accommodate the needs of a modern desktop environment and applications.


441-467: LGTM with suggestions: Consistent configuration for OpenSUSE Tumbleweed

The VirtualMachineClusterPreference for OpenSUSE Tumbleweed maintains consistency with the OpenSUSE Leap configuration, which is good for maintainability:

  • Includes RNG device support (preferredRng: {})
  • Uses virtio for disk and interface models
  • Allocates appropriate resources (1 CPU, 2Gi memory)

However, given that Tumbleweed is a rolling release with potentially more up-to-date software, consider the following suggestions:

  1. Resource Allocation: Tumbleweed might benefit from slightly higher resource allocations to accommodate its potentially more demanding software. Consider increasing the memory:
  requirements:
    cpu:
      guest: 2
    memory:
      guest: 4Gi
  1. Modern Features: Evaluate if Tumbleweed could benefit from additional modern features like:
    • Dedicated I/O thread for disk (preferredDiskDedicatedIoThread: true)
    • Network interface multi-queue support (preferredNetworkInterfaceMultiQueue: true)

These adjustments could better align the configuration with Tumbleweed's cutting-edge nature while maintaining similarity with the Leap configuration.


468-501: LGTM with suggestion: Advanced configuration for RHEL 10 Beta (amd64)

The VirtualMachineClusterPreference for RHEL 10 Beta (amd64) is well-configured with a focus on modern features and enhanced security:

  1. Advanced features:

    • Dedicated I/O thread (preferredDiskDedicatedIoThread: true)
    • RNG device support (preferredRng: {})
    • System Management Mode (preferredSmm: {})
    • EFI firmware with Secure Boot (secureBoot: true)
  2. These features align well with expectations for a beta version of an enterprise-grade OS, enhancing performance, security, and compatibility with modern hardware.

However, there's one point to consider:

Resource Allocation: The current requirements (1 CPU, 1.5Gi memory) seem modest for a modern RHEL beta version. For an enterprise-grade OS, especially a beta that might include additional debugging features, consider increasing the default resources:

  requirements:
    cpu:
      guest: 2
    memory:
      guest: 4Gi

This increase would provide more headroom for testing and running enterprise applications, aligning better with RHEL's typical use cases and the potential overhead of beta features.

packages/system/kubevirt-common-instancetypes/templates/instancetypes.yaml (3)

403-541: M Series is well-designed for memory-intensive workloads, with room for enhancement

The M Series instance types are well-configured for memory-intensive applications:

  • Consistent 1:8 CPU to memory ratio across all instance types.
  • Use of hugepages (2Mi) can improve memory management and performance.
  • Good range of instance sizes from large to 8xlarge.

Suggestions for potential improvements:

  1. Consider adding dedicated CPU placement and isolated emulator thread options, similar to the CX Series. This could benefit certain memory-intensive workloads that are also compute-sensitive.
  2. Evaluate if the fixed 1:8 CPU to memory ratio is optimal for all use cases. Some memory-intensive applications might benefit from even higher memory-to-CPU ratios.
  3. Explore the possibility of offering larger page sizes (e.g., 1Gi) for extremely memory-intensive workloads that could benefit from even larger hugepages.

Would you like assistance in designing additional M Series variants with different CPU-to-memory ratios or enhanced CPU isolation features?


783-1015: O Series provides overcommitted resources, but consider adding usage guidelines

The O Series offers a good range of instance types with overcommitted memory, which can be useful for increasing VM density and resource utilization. However, there are some points to consider:

  1. The consistent 50% memory overcommit across all instance types is simple to understand but may not be optimal for all use cases. Consider:

    • Varying the overcommit percentage based on instance size.
    • Allowing users to specify custom overcommit ratios within a safe range.
  2. There's no mention of potential performance implications or best practices for using overcommitted instances. Consider adding:

    • Annotations or documentation explaining the potential risks and benefits of memory overcommitment.
    • Guidelines for monitoring and managing overcommitted instances.
    • Recommendations for workload types that are suitable for overcommitted instances.
  3. The series lacks specific optimizations beyond memory overcommitment. Consider adding:

    • Options for CPU overcommitment to complement memory overcommitment.
    • Integration with automatic ballooning or other memory management techniques to mitigate the risks of overcommitment.

Would you like assistance in drafting usage guidelines for the O Series or designing a more flexible overcommitment scheme?


1361-1649: U Series provides flexible general-purpose instances with room for specialization

The U Series offers a comprehensive range of general-purpose instance types, suitable for a wide variety of workloads:

  1. The simple configuration with just CPU and memory specifications makes these instances flexible and easy to use for diverse applications.
  2. The wide range of sizes (nano to 8xlarge) caters to various resource requirements, from small utility containers to large applications.
  3. The consistent 1:4 CPU to memory ratio (for most sizes) provides a balanced resource allocation suitable for many general-purpose workloads.

Suggestions for potential improvements:

  1. Consider offering variants with different CPU to memory ratios to cater to more specific workload patterns within the general-purpose category.
  2. For larger instance sizes (2xlarge and above), you might want to provide options with hugepages or NUMA optimizations for users who need better performance for memory-intensive or NUMA-aware applications.
  3. Evaluate the possibility of adding a "burstable" option for smaller instance sizes, allowing for CPU bursting capabilities similar to some public cloud offerings.

Would you like assistance in designing U Series variants with different CPU-to-memory ratios or additional performance features for larger sizes?

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 16d3979 and 54645c0.

📒 Files selected for processing (18)
  • packages/apps/kubernetes/Chart.yaml (1 hunks)
  • packages/apps/kubernetes/README.md (1 hunks)
  • packages/apps/kubernetes/templates/cluster.yaml (5 hunks)
  • packages/apps/kubernetes/values.yaml (1 hunks)
  • packages/apps/versions_map (2 hunks)
  • packages/apps/virtual-machine/Chart.yaml (1 hunks)
  • packages/apps/virtual-machine/Makefile (1 hunks)
  • packages/apps/virtual-machine/README.md (1 hunks)
  • packages/apps/virtual-machine/hack/update-instance-types.sh (1 hunks)
  • packages/apps/virtual-machine/templates/vm.yaml (4 hunks)
  • packages/apps/virtual-machine/values.schema.json (1 hunks)
  • packages/apps/virtual-machine/values.yaml (1 hunks)
  • packages/core/platform/bundles/paas-full.yaml (1 hunks)
  • packages/system/kubevirt-common-instancetypes/Chart.yaml (1 hunks)
  • packages/system/kubevirt-common-instancetypes/Makefile (1 hunks)
  • packages/system/kubevirt-common-instancetypes/templates/instancetypes.yaml (1 hunks)
  • packages/system/kubevirt-common-instancetypes/templates/preferences.yaml (1 hunks)
  • packages/system/kubevirt-common-instancetypes/values.yaml (1 hunks)
✅ Files skipped from review due to trivial changes (5)
  • packages/apps/kubernetes/Chart.yaml
  • packages/apps/virtual-machine/Chart.yaml
  • packages/apps/virtual-machine/hack/update-instance-types.sh
  • packages/system/kubevirt-common-instancetypes/Chart.yaml
  • packages/system/kubevirt-common-instancetypes/values.yaml
🧰 Additional context used
🪛 LanguageTool
packages/apps/kubernetes/README.md

[typographical] ~61-~61: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~77-~77: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~79-~79: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~92-~92: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~101-~101: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~104-~104: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~107-~107: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~109-~109: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~123-~123: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~126-~126: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~143-~143: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~146-~146: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~149-~149: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)

packages/apps/virtual-machine/README.md

[style] ~51-~51: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. | `[...

(MISSING_IT_THERE)


[typographical] ~70-~70: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~86-~86: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~88-~88: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~101-~101: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~110-~110: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~113-~113: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~116-~116: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~118-~118: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~132-~132: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~135-~135: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~152-~152: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~155-~155: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~158-~158: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)

🪛 Markdownlint
packages/apps/kubernetes/README.md

36-36: Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
Table pipe style

(MD055, table-pipe-style)


38-38: Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
Table pipe style

(MD055, table-pipe-style)


40-40: Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
Table pipe style

(MD055, table-pipe-style)


36-36: Expected: 6; Actual: 5; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


38-38: Expected: 6; Actual: 5; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


40-40: Expected: 6; Actual: 5; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)

packages/apps/virtual-machine/README.md

52-52: Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


53-53: Expected: leading_and_trailing; Actual: trailing_only; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


267-267: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


267-267: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


268-268: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


268-268: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


53-53: Expected: 3; Actual: 1; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)

🪛 yamllint
packages/apps/virtual-machine/templates/vm.yaml

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

packages/apps/virtual-machine/values.yaml

[error] 21-21: trailing spaces

(trailing-spaces)

packages/core/platform/bundles/paas-full.yaml

[warning] 86-86: too few spaces after comma

(commas)


[warning] 86-86: too few spaces after comma

(commas)


[warning] 86-86: too few spaces after comma

(commas)

🔇 Additional comments (39)
packages/system/kubevirt-common-instancetypes/Makefile (3)

1-2: LGTM: Environment variables are well-defined.

The NAME and NAMESPACE variables are appropriately set and exported. This ensures they're available for use in the Makefile and any subprocesses.


1-12: Overall, the Makefile is well-structured and aligns with the PR objectives.

This Makefile effectively sets up the environment and provides a mechanism to generate and customize instance types and preferences, which aligns well with the PR's objective of introducing default instance types and profiles. The use of kustomize and yq allows for sophisticated YAML manipulation, enabling the creation of tailored configurations.

While the current implementation is good, consider implementing the suggested improvements to enhance error handling, readability, and maintainability. These changes will make the Makefile more robust and easier to manage in the long term.


4-4: LGTM: Shared Makefile inclusion.

Including a shared Makefile (package.mk) is a good practice for maintaining consistency across packages.

Let's verify the existence of the included file:

✅ Verification successful

Verification Successful: Included package.mk file exists.

The included package.mk file exists at the specified path, ensuring consistency across packages.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Verify the existence of the included package.mk file
if [ -f scripts/package.mk ]; then
    echo "package.mk file exists."
else
    echo "package.mk file not found. Please ensure the path is correct."
fi

Length of output: 88

packages/apps/virtual-machine/values.yaml (3)

9-11: LGTM: 'running' parameter properly added

The 'running' parameter has been correctly reintroduced with a default value of 'true'. The placement and documentation are appropriate.


Line range hint 1-31: Overall: Good changes, minor improvements suggested

The changes to this file align well with the PR objectives of introducing default instance types and profiles. The restructuring of the configuration enhances flexibility and usability. A few minor suggestions have been made for documentation improvements, and clarification has been requested regarding the 'origin' parameter in the 'systemDisk' section.

🧰 Tools
🪛 yamllint

[error] 21-21: trailing spaces

(trailing-spaces)


18-25: LGTM: 'systemDisk' configuration added with a minor clarification needed

The 'systemDisk' section has been properly added with appropriate parameters and documentation. The default values for 'storage' and 'storageClass' seem reasonable.

Could you please clarify the purpose of the empty 'origin' parameter? Is this intended to be filled by the user, or is there a default value that should be set?

✅ Verification successful

'origin' Parameter Usage Verified

The origin parameter is conditionally utilized in templates/vm.yaml, indicating it is intended to be optionally provided by the user. This design allows flexibility in VM configurations based on whether an origin is specified.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check if 'origin' is used or referenced elsewhere in the codebase
rg --type yaml 'systemDisk\.origin' --glob '!packages/apps/virtual-machine/values.yaml'

Length of output: 278

🧰 Tools
🪛 yamllint

[error] 21-21: trailing spaces

(trailing-spaces)

packages/apps/kubernetes/values.yaml (1)

18-25: Verify resource allocation strategy for nodeGroups.md0

The changes introduce an instance type and modify the resource specification:

  1. The addition of instanceType: "u1.medium" aligns with the PR objective of introducing instance types. This is a positive change that should standardize resource allocation.

  2. The new resources section with empty cpu and memory values replaces the previous specific resource limits. This change raises a few points to consider:

    a. If the intention is to rely solely on the instance type for resource allocation, the empty resources section might be unnecessary.
    b. If the resources section is intended for future use or dynamic allocation, consider adding a comment explaining its purpose.

To ensure this change doesn't negatively impact resource management, please verify:

  1. The u1.medium instance type provides adequate resources for the ingress-nginx role.
  2. The removal of specific CPU and memory limits doesn't cause unexpected behavior in your cluster management tools.

Run the following script to check for any other occurrences of u1.medium instance type and empty resource specifications:

This will help ensure consistency across your configuration files.

✅ Verification successful

Verified resource allocation strategy for nodeGroups.md0

The changes introduce an instance type and modify the resource specification:

  1. The addition of instanceType: "u1.medium" is consistently applied across relevant configuration files, aligning with the PR objective of standardizing instance types.
  2. The new resources section with empty cpu and memory values is present, indicating it may be intended for future use or dynamic allocation.

No issues were found upon verification.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for u1.medium instance type and empty resource specifications

echo "Checking for u1.medium instance type:"
rg --type yaml 'instanceType:\s*"u1.medium"' -g '!vendor'

echo "\nChecking for empty resource specifications:"
rg --type yaml 'resources:\s*\n\s*cpu:\s*""\s*\n\s*memory:\s*""' -g '!vendor'

Length of output: 652


Script:

#!/bin/bash
# Description: Check for u1.medium instance type and empty resource specifications with corrected regex

echo "Checking for u1.medium instance type:"
rg --type yaml 'instanceType:\s*"u1.medium"' -g '!vendor'

echo -e "\nChecking for empty resource specifications:"
rg --multiline --type yaml 'resources:\s*\n\s*cpu:\s*""\s*\n\s*memory:\s*""' -g '!vendor'

Length of output: 791

packages/apps/versions_map (3)

37-37: LGTM: Specific commit hash for kubernetes 0.12.0

Updating to a specific commit hash (31a45c4) for kubernetes 0.12.0 is a good practice. It ensures reproducibility and provides a clear reference point for this version.


81-81: LGTM: Specific commit hash for virtual-machine 0.4.0

Updating to a specific commit hash (4746d51) for virtual-machine 0.4.0 is a good practice. It ensures reproducibility and provides a clear reference point for this version.


Line range hint 1-85: Overall changes look good, but consider consistency across packages

The updates to specific commit hashes for kubernetes and virtual-machine versions improve version control and reproducibility. However, there are a few points to consider:

  1. Some versions still use HEAD (e.g., kubernetes 0.13.0). Consider updating these to specific commit hashes for consistency.

  2. There's an inconsistency with the mysql package:

    • The AI summary mentions an update to mysql 0.4.0, but this change is not visible in the provided diff.
    • The summary also states that mysql 0.5.1 remains at HEAD, which is correct based on the visible content.

To ensure consistency and accuracy:

  1. Consider adopting a consistent approach for all packages to use specific commit hashes instead of HEAD for better version control across the entire project.
packages/apps/virtual-machine/templates/vm.yaml (3)

16-25: Well-implemented addition of instancetype and preference fields.

The new instancetype and preference fields enhance the flexibility of VM configurations by allowing the use of predefined cluster-wide instance types and preferences. The conditional inclusion and correct specification of resource kinds are well implemented.


36-38: Improved flexibility in storage configuration.

The updated storage request now uses $.Values.systemDisk.storage, allowing for more granular control. The conditional inclusion of storageClassName based on $.Values.systemDisk.storageClass is a good practice, providing flexibility in storage class selection.


56-59: Good implementation of conditional CPU resource allocation.

The conditional inclusion of CPU cores based on .Values.resources.cpu allows for more flexible resource allocation. This approach ensures that CPU resources are only specified when needed, which is a good practice for resource management in Kubernetes.

packages/apps/virtual-machine/values.schema.json (1)

23-162: Overall, good improvements with some minor concerns.

The changes to this schema file significantly enhance the configurability and flexibility of virtual machine instances. The introduction of instanceType and instanceProfile properties, along with the restructuring of disk-related properties, are particularly noteworthy improvements.

However, there are a few areas that could be further improved:

  1. Consider removing empty string options from enum lists to prevent potential issues.
  2. Fix the typo in the instanceProfile description.
  3. Reconsider the use of empty string defaults for cpu and memory properties, as these might lead to unexpected behavior.
  4. Verify the intended default value for systemDisk.storage, as it differs from what was mentioned in the AI summary.

Addressing these minor points would further enhance the robustness and clarity of the schema.

packages/core/platform/bundles/paas-full.yaml (1)

82-86: Summary: New release entry aligns with PR objectives.

The addition of the kubevirt-common-instancetypes release entry aligns well with the PR objectives of introducing a set of default instance types and profiles. This change enhances the functionality of the CozyStack platform by integrating common instance types for KubeVirt, which is crucial for standardizing virtual machine configurations.

🧰 Tools
🪛 yamllint

[warning] 86-86: too few spaces after comma

(commas)


[warning] 86-86: too few spaces after comma

(commas)


[warning] 86-86: too few spaces after comma

(commas)

packages/apps/kubernetes/README.md (4)

Line range hint 1-29: LGTM: Overview and Deployment Details are well-structured and informative.

The Overview and Deployment Details sections provide a clear and concise explanation of the Managed Kubernetes Service, its benefits, and deployment specifics. The information is accurate and relevant.

🧰 Tools
🪛 LanguageTool

[typographical] ~61-~61: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~77-~77: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~79-~79: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~92-~92: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~101-~101: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~104-~104: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~107-~107: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~109-~109: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~123-~123: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~126-~126: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~143-~143: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~146-~146: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~149-~149: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)

🪛 Markdownlint

36-36: Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
Table pipe style

(MD055, table-pipe-style)


38-38: Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
Table pipe style

(MD055, table-pipe-style)


40-40: Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
Table pipe style

(MD055, table-pipe-style)


36-36: Expected: 6; Actual: 5; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


38-38: Expected: 6; Actual: 5; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


40-40: Expected: 6; Actual: 5; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


154-207: LGTM: Resources table is well-formatted and informative.

The Resources section provides a comprehensive and well-structured table of instance type resources. The table is correctly formatted for Markdown and includes relevant information about vCPUs and Memory for each instance type.


Line range hint 1-207: LGTM: Comprehensive and well-structured README.

The README provides a thorough overview of the Managed Kubernetes Service, including detailed information about various instance types and their characteristics. The structure is logical and easy to follow, making it a valuable resource for users. The content aligns well with the PR objectives of introducing default instance types and profiles.

🧰 Tools
🪛 LanguageTool

[typographical] ~61-~61: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~77-~77: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~79-~79: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~92-~92: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~101-~101: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~104-~104: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~107-~107: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~109-~109: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~123-~123: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~126-~126: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~143-~143: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~146-~146: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~149-~149: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)

🪛 Markdownlint

36-36: Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
Table pipe style

(MD055, table-pipe-style)


38-38: Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
Table pipe style

(MD055, table-pipe-style)


40-40: Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
Table pipe style

(MD055, table-pipe-style)


36-36: Expected: 6; Actual: 5; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


38-38: Expected: 6; Actual: 5; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


40-40: Expected: 6; Actual: 5; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


Line range hint 1-207: Static analysis hints addressed in previous comments.

The static analysis tools have identified several typographical, style, and formatting issues. Most of these have already been addressed in previous review comments:

  1. The suggestion to remove commas before "if" and replace "in order to" with "to" has been included in the comment for improving clarity across all series sections.
  2. The table formatting issues identified by Markdownlint have been addressed in the comment about fixing the Series table formatting.

No additional actions are required based on the static analysis hints.

🧰 Tools
🪛 LanguageTool

[typographical] ~61-~61: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~77-~77: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~79-~79: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~92-~92: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~101-~101: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~104-~104: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~107-~107: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~109-~109: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~123-~123: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~126-~126: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~143-~143: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~146-~146: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~149-~149: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)

🪛 Markdownlint

36-36: Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
Table pipe style

(MD055, table-pipe-style)


38-38: Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
Table pipe style

(MD055, table-pipe-style)


40-40: Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
Table pipe style

(MD055, table-pipe-style)


36-36: Expected: 6; Actual: 5; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


38-38: Expected: 6; Actual: 5; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


40-40: Expected: 6; Actual: 5; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)

packages/apps/kubernetes/templates/cluster.yaml (3)

18-22: LGTM: Instance type integration aligns with PR objectives.

The addition of the instancetype field in the virtualMachineTemplate spec is a well-implemented feature. It allows for flexible VM configurations by referencing predefined VirtualMachineClusterInstancetype resources, which aligns perfectly with the PR's objective of introducing default instance types. The conditional inclusion ensures backward compatibility with existing configurations.


53-56: LGTM: Memory configuration complements CPU settings.

The conditional memory configuration is a good addition, complementing the CPU settings to provide a complete resource allocation solution. It's correctly implemented to only apply when explicitly defined in the group resources, maintaining flexibility in VM configurations.


Line range hint 1-300: Overall assessment: Well-implemented changes that align with PR objectives.

The changes introduced in this file successfully implement the integration of instance types and dynamic resource allocation. The modifications enhance the flexibility and robustness of the cluster configuration, allowing for more granular control over VM resources. The conditional logic ensures backward compatibility while introducing new features.

Key improvements include:

  1. Integration of instance types in the virtualMachineTemplate.
  2. Dynamic CPU and memory configuration based on group resources.
  3. Instance type validation to prevent configuration errors.
  4. Enhanced cluster autoscaler annotations for better resource management.

These changes align well with the PR objectives of introducing default instance types and profiles. The implementation is thoughtful and maintains the integrity of the existing system while introducing new capabilities.

packages/system/kubevirt-common-instancetypes/templates/preferences.yaml (12)

1-25: LGTM: Well-configured Alpine Linux preference

The VirtualMachineClusterPreference for Alpine is well-configured:

  • Appropriate metadata and annotations are provided.
  • Resource requirements (1 CPU, 512Mi memory) are suitable for Alpine's lightweight nature.
  • The use of virtio for disk and interface models is good for performance.

This configuration aligns well with Alpine Linux characteristics and best practices for KubeVirt.


26-52: LGTM: Appropriate configuration for deprecated CentOS 7

The VirtualMachineClusterPreference for CentOS 7 is well-configured:

  • Correctly marked as deprecated in the labels.
  • Resource requirements (1 CPU, 1Gi memory) are suitable for a basic CentOS 7 VM.
  • Consistent use of virtio for disk and interface models.

Users should be aware that this is a deprecated configuration, which is appropriately indicated.


83-110: LGTM: Improved configuration for CentOS Stream 10

The VirtualMachineClusterPreference for CentOS Stream 10 shows notable improvements:

  • Increased resources (1 CPU, 1.5Gi memory) suitable for a modern OS.
  • Addition of preferredDiskDedicatedIoThread: true can enhance I/O performance.
  • Inclusion of preferredRng: {} improves security and supports applications requiring randomness.

These changes demonstrate good attention to performance and security considerations for newer OS versions.


142-168: LGTM: Appropriate configuration for deprecated CentOS Stream 8

The VirtualMachineClusterPreference for CentOS Stream 8 is correctly configured:

  • Properly marked as deprecated in the labels.
  • Resource requirements (1 CPU, 1.5Gi memory) are suitable for this OS version.
  • Consistent use of virtio for disk and interface models.

Note that this configuration lacks some features present in the newer CentOS Stream 10 preference, such as dedicated I/O thread and RNG device. This is acceptable for a deprecated OS version, but users should be aware of these differences when choosing between versions.


199-231: LGTM: Well-optimized configuration for deprecated CentOS Stream 8 DPDK

The VirtualMachineClusterPreference for CentOS Stream 8 DPDK is well-configured with appropriate optimizations:

  • Correctly marked as deprecated.
  • CPU topology spread configuration (preferredCPUTopology: spread) is suitable for DPDK workloads.
  • Network interface multi-queue support (preferredNetworkInterfaceMultiQueue: true) can enhance DPDK performance.
  • Increased CPU requirement (2 CPUs) is appropriate for DPDK workloads.

These optimizations demonstrate good consideration for DPDK-specific needs while maintaining consistency with other CentOS Stream 8 configurations. Users should be aware of the deprecated status when considering this preference.


232-259: LGTM: Modern and consistent configuration for CentOS Stream 9

The VirtualMachineClusterPreference for CentOS Stream 9 is well-configured and aligns with modern virtualization best practices:

  • Includes dedicated I/O thread for disk (preferredDiskDedicatedIoThread: true), which can improve I/O performance.
  • Incorporates RNG device (preferredRng: {}), enhancing security and supporting applications requiring randomness.
  • Maintains consistent resource requirements (1 CPU, 1.5Gi memory) with other recent CentOS Stream versions.

This configuration demonstrates good consistency with CentOS Stream 10 while providing necessary features for a modern operating system environment.


291-324: Excellent configuration for CentOS Stream 9 DPDK

The VirtualMachineClusterPreference for CentOS Stream 9 DPDK is exceptionally well-configured, combining DPDK optimizations with modern virtualization features:

  1. DPDK-specific optimizations:

    • CPU topology spread configuration (preferredCPUTopology: spread)
    • Network interface multi-queue support (preferredNetworkInterfaceMultiQueue: true)
    • Increased CPU requirement (2 CPUs)
  2. Modern virtualization features:

    • Dedicated I/O thread for disk (preferredDiskDedicatedIoThread: true)
    • RNG device support (preferredRng: {})

This configuration effectively merges the best aspects of DPDK-optimized and modern CentOS Stream configurations, providing an excellent foundation for high-performance network-intensive workloads.


325-350: LGTM: Appropriately minimal configuration for Cirros

The VirtualMachineClusterPreference for Cirros is well-configured for its purpose:

  • Minimal resource requirements (1 CPU, 256Mi memory) align perfectly with Cirros's nature as a lightweight, quick-boot OS.
  • Use of virtio for disk and interface models ensures good performance while maintaining consistency with other configurations.
  • The simplicity of the configuration matches Cirros's primary use case for testing and minimal environments.

This preference demonstrates a good understanding of Cirros's characteristics and typical usage scenarios.


351-384: Excellent modern and secure configuration for Fedora (amd64)

The VirtualMachineClusterPreference for Fedora (amd64) is exceptionally well-configured with a focus on modern features and enhanced security:

  1. Performance and security features:

    • RNG device support (preferredRng: {})
    • Network interface multi-queue support (preferredNetworkInterfaceMultiQueue: true)
    • System Management Mode (preferredSmm: {})
    • Secure Boot enabled (secureBoot: true)
  2. Appropriate resource allocation:

    • 1 CPU and 2Gi memory, suitable for a modern, full-featured Linux distribution
  3. Use of EFI firmware with Secure Boot enhances the overall security posture of the VM

This configuration demonstrates a strong commitment to leveraging modern virtualization capabilities while prioritizing security, making it an excellent choice for Fedora workloads requiring a balance of performance and protection.


502-530: LGTM with suggestions: Well-configured RHEL 10 Beta (arm64) with notes on features and resources

The VirtualMachineClusterPreference for RHEL 10 Beta (arm64) maintains consistency with the amd64 version in several key aspects:

  1. Consistent features:

    • Dedicated I/O thread (preferredDiskDedicatedIoThread: true)
    • RNG device support (preferredRng: {})
    • Resource allocation (1 CPU, 1.5Gi memory)

414-440: LGTM with suggestion: Solid configuration for OpenSUSE Leap

The VirtualMachineClusterPreference for OpenSUSE Leap is well-configured:

  • Includes RNG device support (preferredRng: {}), enhancing security and supporting applications requiring randomness.
  • Uses virtio for disk and interface models, ensuring good performance.
  • Appropriate resource allocation (1 CPU, 2Gi memory) for a modern Linux distribution.

The configuration provides a good foundation for OpenSUSE Leap VMs. However, there's one point to consider:

It might be beneficial to verify if there are any OpenSUSE Leap-specific optimizations or features that could be added to this configuration. For instance, some distributions benefit from specific CPU topology settings or additional device configurations.

#!/bin/bash
# Check for any existing OpenSUSE Leap VMs with custom configurations
rg --type yaml 'kind:\s*VirtualMachine.*\n.*metadata:\n.*\s*name:.*opensuse.*leap' -A 30 | rg 'cpu:|devices:|features:|firmware:'

This search might reveal commonly used settings for OpenSUSE Leap that could be incorporated into this preference.


385-413: LGTM with suggestion: Well-configured Fedora (arm64) with a note on security features

The VirtualMachineClusterPreference for Fedora (arm64) is well-configured and maintains consistency with the amd64 version in several aspects:

  1. Consistent features:

    • RNG device support (preferredRng: {})
    • Network interface multi-queue support (preferredNetworkInterfaceMultiQueue: true)
    • Appropriate resource allocation (1 CPU, 2Gi memory)
  2. Notable differences:

    • Absence of System Management Mode (SMM) and Secure Boot features

The configuration is appropriate for Fedora on arm64, but there's one point to consider:

Verify that the absence of SMM and Secure Boot in the arm64 configuration is intentional and aligns with arm64 hardware capabilities or specific requirements. If these features are supported and beneficial for arm64, consider adding them to maintain feature parity with the amd64 version.

packages/system/kubevirt-common-instancetypes/templates/instancetypes.yaml (4)

1-257: CX Series configuration looks excellent for compute-intensive workloads

The CX Series instance types are well-designed for compute-intensive applications:

  • Dedicated CPU placement and isolated emulator thread ensure optimal performance.
  • NUMA topology passthrough allows for efficient resource utilization.
  • Hugepages with 2Mi page size can improve memory management and performance.
  • The range of instance sizes (medium to 8xlarge) provides flexibility for various workload requirements.

This configuration should provide excellent performance for compute-intensive tasks.


543-781: N Series is excellently optimized for network-intensive DPDK workloads

The N Series instance types are very well-configured for network-intensive applications, particularly those using DPDK:

  1. Dedicated CPU placement and isolated emulator thread ensure consistent CPU resources for network processing.
  2. The use of 1Gi hugepages is excellent for network applications requiring large contiguous memory regions.
  3. Disabling CPU load balancing, CPU quota, and IRQ load balancing helps maintain consistent and predictable network performance.
  4. The range of instance sizes with varying CPU to memory ratios provides flexibility for different network workload requirements.

Additional positive notes:

  • The series requires nodes capable of running DPDK workloads, ensuring proper hardware support.
  • The configuration is consistent across all instance types in the series, making it easy for users to scale their applications.

This configuration should provide excellent performance for network-intensive tasks, especially those leveraging DPDK.


1017-1359: RT Series is exceptionally well-configured for realtime applications

The RT Series instance types are excellently designed for realtime applications, with a strong focus on predictable and low-latency performance:

  1. Dedicated CPU placement and isolated emulator thread ensure consistent CPU resources, critical for realtime tasks.
  2. The use of 1Gi hugepages is perfect for realtime applications requiring large contiguous memory regions and reduced TLB misses.
  3. NUMA topology passthrough allows for optimal memory access in multi-socket systems, which is crucial for latency-sensitive applications.
  4. Disabling CPU load balancing, CPU quota, and IRQ load balancing helps maintain consistent and predictable performance by reducing system interference.
  5. The realtime CPU configuration (spec.cpu.realtime: {}) indicates the use of a realtime kernel, which is essential for strict timing requirements.

Additional positive notes:

  • The series covers a wide range of instance sizes (micro to 8xlarge), providing flexibility for various realtime workload requirements.
  • The configuration is consistent across all instance types, making it easy for users to scale their realtime applications.

This configuration should provide excellent performance for realtime tasks, offering the predictability and low-latency characteristics required by such applications.


1-1649: Comprehensive and well-structured instance type definitions with room for targeted enhancements

The instancetypes.yaml file presents a robust and diverse set of instance types that cater to a wide range of workload requirements. Key strengths include:

  1. Comprehensive coverage: The file defines instance types for compute-intensive, GPU, memory-intensive, network-intensive, overcommitted, realtime, and general-purpose workloads.
  2. Consistent naming and sizing: The use of consistent naming conventions (e.g., cx1.large, m1.xlarge) and a wide range of sizes makes it easy for users to understand and select appropriate instance types.
  3. Tailored optimizations: Each series incorporates specific features and optimizations relevant to its target use case, such as hugepages, dedicated CPU placement, and NUMA configurations.
  4. Scalability: The instance types within each series scale consistently, allowing users to easily adjust resources as their needs change.

Areas for potential future enhancement:

  1. GPU instances: Consider updating the GN series to include more diverse GPU options and clearer specifications.
  2. Overcommitted instances: The O series could benefit from more flexible overcommitment options and clearer usage guidelines.
  3. General-purpose instances: Consider adding variants of the U series with different CPU-to-memory ratios or additional performance features for larger sizes.
  4. Cross-series features: Evaluate if some optimizations (e.g., hugepages) could be beneficial as optional features for other series.

Overall, this configuration provides an excellent foundation for a wide range of cloud workloads, with well-considered optimizations for specific use cases.

packages/apps/virtual-machine/Makefile (1)

9-9: Confirmed the modification of externalPorts type

The command correctly sets the type of externalPorts.items to "integer" in values.schema.json.

Comment on lines 155 to 157
"type": "string",
"description": "The number of CPU cores allocated to the virtual machine",
"default": 1
"default": ""
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Approve type change, but reconsider empty string default.

The change of the cpu property type from number to string allows for more flexible CPU specifications, which is a good improvement.

However, setting the default value to an empty string might lead to unexpected behavior if not handled properly in the application logic. Consider setting a meaningful default value or ensuring that the application handles empty string values gracefully.

"type": "string",
"description": "The size of the disk allocated for the virtual machine",
"default": "5Gi"
"default": ""
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Reconsider empty string default for memory.

Setting the default value for the memory property to an empty string might lead to unexpected behavior if not handled properly in the application logic. Consider setting a meaningful default value or ensuring that the application handles empty string values gracefully.

Comment on lines +30 to +43
# Series

### Common parameters
<!-- source: https://github.com/kubevirt/common-instancetypes/blob/main/README.md -->

| Name | Description | Value |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| `host` | The hostname used to access the Kubernetes cluster externally (defaults to using the cluster name as a subdomain for the tenant host). | `""` |
| `controlPlane.replicas` | Number of replicas for Kubernetes contorl-plane components | `2` |
| `storageClass` | StorageClass used to store user data | `replicated` |
| `nodeGroups` | nodeGroups configuration | `{}` |
. | U | O | CX | M | RT
----------------------------|-----|-----|------|-----|------
*Has GPUs* | | | | |
*Hugepages* | | | ✓ | ✓ | ✓
*Overcommitted Memory* | | ✓ | | |
*Dedicated CPU* | | | ✓ | | ✓
*Burstable CPU performance* | ✓ | ✓ | | ✓ |
*Isolated emulator threads* | | | ✓ | | ✓
*vNUMA* | | | ✓ | | ✓
*vCPU-To-Memory Ratio* | 1:4 | 1:4 | 1:2 | 1:8 | 1:4
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix table formatting for proper Markdown rendering.

The Series table provides valuable information, but its formatting needs adjustment for correct Markdown rendering. Please apply the following changes:

  1. Add a leading pipe (|) to each row.
  2. Ensure all rows have the same number of columns (6 in total).
  3. Add a separator row after the header row.

Here's the corrected table format:

|                            |  U  |  O  |  CX  |  M  |  RT  |
|----------------------------|-----|-----|------|-----|------|
| *Has GPUs*                 |     |     |      |     |      |
| *Hugepages*                |     |     ||||
| *Overcommitted Memory*     |     ||      |     |      |
| *Dedicated CPU*            |     |     ||     ||
| *Burstable CPU performance*|||      ||      |
| *Isolated emulator threads*|     |     ||     ||
| *vNUMA*                    |     |     ||     ||
| *vCPU-To-Memory Ratio*     | 1:4 | 1:4 |  1:2 | 1:8 | 1:4  |

This will ensure the table is correctly displayed in Markdown viewers.

🧰 Tools
🪛 Markdownlint

36-36: Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
Table pipe style

(MD055, table-pipe-style)


38-38: Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
Table pipe style

(MD055, table-pipe-style)


40-40: Expected: no_leading_or_trailing; Actual: trailing_only; Unexpected trailing pipe
Table pipe style

(MD055, table-pipe-style)


36-36: Expected: 6; Actual: 5; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


38-38: Expected: 6; Actual: 5; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


40-40: Expected: 6; Actual: 5; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)

Comment on lines 170 to 268
The following instancetype resources are provided by Cozystack:

Name | vCPUs | Memory
-----|-------|-------
cx1.2xlarge | 8 | 16Gi
cx1.4xlarge | 16 | 32Gi
cx1.8xlarge | 32 | 64Gi
cx1.large | 2 | 4Gi
cx1.medium | 1 | 2Gi
cx1.xlarge | 4 | 8Gi
gn1.2xlarge | 8 | 32Gi
gn1.4xlarge | 16 | 64Gi
gn1.8xlarge | 32 | 128Gi
gn1.xlarge | 4 | 16Gi
m1.2xlarge | 8 | 64Gi
m1.4xlarge | 16 | 128Gi
m1.8xlarge | 32 | 256Gi
m1.large | 2 | 16Gi
m1.xlarge | 4 | 32Gi
n1.2xlarge | 16 | 32Gi
n1.4xlarge | 32 | 64Gi
n1.8xlarge | 64 | 128Gi
n1.large | 4 | 8Gi
n1.medium | 4 | 4Gi
n1.xlarge | 8 | 16Gi
o1.2xlarge | 8 | 32Gi
o1.4xlarge | 16 | 64Gi
o1.8xlarge | 32 | 128Gi
o1.large | 2 | 8Gi
o1.medium | 1 | 4Gi
o1.micro | 1 | 1Gi
o1.nano | 1 | 512Mi
o1.small | 1 | 2Gi
o1.xlarge | 4 | 16Gi
rt1.2xlarge | 8 | 32Gi
rt1.4xlarge | 16 | 64Gi
rt1.8xlarge | 32 | 128Gi
rt1.large | 2 | 8Gi
rt1.medium | 1 | 4Gi
rt1.micro | 1 | 1Gi
rt1.small | 1 | 2Gi
rt1.xlarge | 4 | 16Gi
u1.2xlarge | 8 | 32Gi
u1.2xmedium | 2 | 4Gi
u1.4xlarge | 16 | 64Gi
u1.8xlarge | 32 | 128Gi
u1.large | 2 | 8Gi
u1.medium | 1 | 4Gi
u1.micro | 1 | 1Gi
u1.nano | 1 | 512Mi
u1.small | 1 | 2Gi
u1.xlarge | 4 | 16Gi

The following preference resources are provided by Cozystack:

Name | Guest OS
-----|---------
alpine | Alpine
centos.7 | CentOS 7
centos.7.desktop | CentOS 7
centos.stream10 | CentOS Stream 10
centos.stream10.desktop | CentOS Stream 10
centos.stream8 | CentOS Stream 8
centos.stream8.desktop | CentOS Stream 8
centos.stream8.dpdk | CentOS Stream 8
centos.stream9 | CentOS Stream 9
centos.stream9.desktop | CentOS Stream 9
centos.stream9.dpdk | CentOS Stream 9
cirros | Cirros
fedora | Fedora (amd64)
fedora.arm64 | Fedora (arm64)
opensuse.leap | OpenSUSE Leap
opensuse.tumbleweed | OpenSUSE Tumbleweed
rhel.10 | Red Hat Enterprise Linux 10 Beta (amd64)
rhel.10.arm64 | Red Hat Enterprise Linux 10 Beta (arm64)
rhel.7 | Red Hat Enterprise Linux 7
rhel.7.desktop | Red Hat Enterprise Linux 7
rhel.8 | Red Hat Enterprise Linux 8
rhel.8.desktop | Red Hat Enterprise Linux 8
rhel.8.dpdk | Red Hat Enterprise Linux 8
rhel.9 | Red Hat Enterprise Linux 9 (amd64)
rhel.9.arm64 | Red Hat Enterprise Linux 9 (arm64)
rhel.9.desktop | Red Hat Enterprise Linux 9 Desktop (amd64)
rhel.9.dpdk | Red Hat Enterprise Linux 9 DPDK (amd64)
rhel.9.realtime | Red Hat Enterprise Linux 9 Realtime (amd64)
sles | SUSE Linux Enterprise Server
ubuntu | Ubuntu
windows.10 | Microsoft Windows 10
windows.10.virtio | Microsoft Windows 10 (virtio)
windows.11 | Microsoft Windows 11
windows.11.virtio | Microsoft Windows 11 (virtio)
windows.2k16 | Microsoft Windows Server 2016
windows.2k16.virtio | Microsoft Windows Server 2016 (virtio)
windows.2k19 | Microsoft Windows Server 2019
windows.2k19.virtio | Microsoft Windows Server 2019 (virtio)
windows.2k22 | Microsoft Windows Server 2022
windows.2k22.virtio | Microsoft Windows Server 2022 (virtio)
windows.2k25 | Microsoft Windows Server 2025
windows.2k25.virtio | Microsoft Windows Server 2025 (virtio)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Improve table formatting for better readability

The comprehensive lists of instance types and supported guest operating systems are valuable additions to the documentation. However, the current formatting of these tables can be improved for better readability and to conform to Markdown best practices.

Please apply the following changes to improve the table formatting:

  1. Add leading and trailing pipe characters (|) to each row of both tables.
  2. Align the column headers and add a separator row after the headers.

Here's an example of how the instance types table should be formatted:

| Name | vCPUs | Memory |
|------|-------|--------|
| cx1.2xlarge | 8 | 16Gi |
| cx1.4xlarge | 16 | 32Gi |
...

And for the preference resources table:

| Name | Guest OS |
|------|----------|
| alpine | Alpine |
| centos.7 | CentOS 7 |
...

These changes will significantly improve the readability of the tables and ensure they render correctly on various Markdown platforms.

🧰 Tools
🪛 Markdownlint

172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


267-267: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


267-267: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


268-268: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


268-268: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)

Comment on lines 5 to 8
INSTANCE_TYPES=$$(yq e '.metadata.name' -o=json -r ../../system/kubevirt-common-instancetypes/templates/instancetypes.yaml | yq 'split(" ") | . + [""]' -o json) \
&& yq -i -o json ".properties.instanceType.optional=true | .properties.instanceType.enum = $${INSTANCE_TYPES}" values.schema.json
PREFERENCES=$$(yq e '.metadata.name' -o=json -r ../../system/kubevirt-common-instancetypes/templates/preferences.yaml | yq 'split(" ") | . + [""]' -o json) \
&& yq -i -o json ".properties.instanceProfile.optional=true | .properties.instanceProfile.enum = $${PREFERENCES}" values.schema.json
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Refactor to eliminate code duplication

The commands for extracting INSTANCE_TYPES and PREFERENCES are nearly identical. Refactoring can enhance maintainability and reduce repetition. Consider creating a Makefile function or using a loop to handle both cases.

Here’s an example using a Makefile macro:

define update_schema_enum
	$1=$$(yq e '.items[].metadata.name' -o=json $(2)) \
	  && yq -i -o json ".properties.$3.optional=true | .properties.$3.enum = $$($1)" values.schema.json
endef

generate:
	readme-generator -v values.yaml -s values.schema.json -r README.md
	$(call update_schema_enum,INSTANCE_TYPES,../../system/kubevirt-common-instancetypes/templates/instancetypes.yaml,instanceType)
	$(call update_schema_enum,PREFERENCES,../../system/kubevirt-common-instancetypes/templates/preferences.yaml,instanceProfile)
	yq -i -o json '.properties.externalPorts.items.type = "integer"' values.schema.json

This approach reduces duplication and centralizes the extraction logic.

Comment on lines 5 to 6
INSTANCE_TYPES=$$(yq e '.metadata.name' -o=json -r ../../system/kubevirt-common-instancetypes/templates/instancetypes.yaml | yq 'split(" ") | . + [""]' -o json) \
&& yq -i -o json ".properties.instanceType.optional=true | .properties.instanceType.enum = $${INSTANCE_TYPES}" values.schema.json
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Correct the yq command to accurately extract INSTANCE_TYPES

The current command may not correctly extract the instance type names from the YAML file. The use of split(" ") and the extraction path might not align with the structure of your YAML file. Consider modifying the yq command to accurately extract the list of instance type names.

Here's a suggested fix:

- INSTANCE_TYPES=$$(yq e '.metadata.name' -o=json -r ../../system/kubevirt-common-instancetypes/templates/instancetypes.yaml | yq 'split(" ") | . + [""]' -o json) \
+ INSTANCE_TYPES=$$(yq e '.items[].metadata.name' -o=json ../../system/kubevirt-common-instancetypes/templates/instancetypes.yaml) \

This change assumes that the YAML file contains a list under .items[] and extracts each metadata.name.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
INSTANCE_TYPES=$$(yq e '.metadata.name' -o=json -r ../../system/kubevirt-common-instancetypes/templates/instancetypes.yaml | yq 'split(" ") | . + [""]' -o json) \
&& yq -i -o json ".properties.instanceType.optional=true | .properties.instanceType.enum = $${INSTANCE_TYPES}" values.schema.json
INSTANCE_TYPES=$$(yq e '.items[].metadata.name' -o=json ../../system/kubevirt-common-instancetypes/templates/instancetypes.yaml) \
&& yq -i -o json ".properties.instanceType.optional=true | .properties.instanceType.enum = $${INSTANCE_TYPES}" values.schema.json

Comment on lines 7 to 8
PREFERENCES=$$(yq e '.metadata.name' -o=json -r ../../system/kubevirt-common-instancetypes/templates/preferences.yaml | yq 'split(" ") | . + [""]' -o json) \
&& yq -i -o json ".properties.instanceProfile.optional=true | .properties.instanceProfile.enum = $${PREFERENCES}" values.schema.json
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Correct the yq command to accurately extract PREFERENCES

Similar to the previous issue, the command may not correctly extract the preference names due to the extraction path and use of split(" "). Adjust the yq command to match the YAML file's structure.

Suggested fix:

- PREFERENCES=$$(yq e '.metadata.name' -o=json -r ../../system/kubevirt-common-instancetypes/templates/preferences.yaml | yq 'split(" ") | . + [""]' -o json) \
+ PREFERENCES=$$(yq e '.items[].metadata.name' -o=json ../../system/kubevirt-common-instancetypes/templates/preferences.yaml) \

This modification extracts the names from each item in the YAML file.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
PREFERENCES=$$(yq e '.metadata.name' -o=json -r ../../system/kubevirt-common-instancetypes/templates/preferences.yaml | yq 'split(" ") | . + [""]' -o json) \
&& yq -i -o json ".properties.instanceProfile.optional=true | .properties.instanceProfile.enum = $${PREFERENCES}" values.schema.json
PREFERENCES=$$(yq e '.items[].metadata.name' -o=json ../../system/kubevirt-common-instancetypes/templates/preferences.yaml) \
&& yq -i -o json ".properties.instanceProfile.optional=true | .properties.instanceProfile.enum = $${PREFERENCES}" values.schema.json

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Inline review comments failed to post

🛑 Comments failed to post (12)
packages/apps/vm-disk/templates/dashboard-resourcemap.yaml (1)

1-12: 💡 Codebase verification

Permissions Insufficient for All Dashboard Components

The current Role definition grants limited read-only access to a specific datavolume. However, multiple dashboard-related resources have been identified across the codebase that may require additional permissions. To ensure complete functionality and adherence to the principle of least privilege, consider the following actions:

  • Expand Role Permissions:

    • Review each dashboard-related resource listed in the shell script output.
    • Determine the necessary apiGroups, resources, resourceNames, and verbs required for each component.
    • Update the Role to include these permissions as needed.
  • Audit Existing Roles:

    • Ensure there are no overlapping or conflicting Roles that might affect dashboard operations.
    • Consolidate permissions where appropriate to maintain clarity and security.
  • Document Permissions:

    • Add comments to the Role YAML explaining the purpose of each permission.
    • Ensure maintainability by clearly outlining why each permission is necessary.

By addressing these areas, you can enhance the Role's effectiveness and maintain robust security practices.

🔗 Analysis chain

LGTM! Well-structured Role definition for dashboard resources.

The Role is correctly defined with appropriate permissions for accessing datavolumes in the context of a dashboard. Here are some observations and suggestions:

  1. The use of {{ .Release.Name }} for both the Role name and the resourceName is a good practice, ensuring uniqueness across different releases.
  2. The permissions are appropriately limited to "get", "list", and "watch" for the specific datavolume resource, following the principle of least privilege.

Consider adding a comment at the top of the file explaining the purpose of this Role, e.g.:

# This Role grants read-only access to the dashboard for viewing datavolumes
# associated with this specific release.

It's important to ensure that these permissions are sufficient for the dashboard's requirements. Let's verify if there are any other resources or permissions needed:

If the script reveals additional dashboard components or roles, we may need to review and potentially expand the permissions granted by this Role.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for other dashboard-related roles or resources that might indicate additional required permissions

# Search for other dashboard-related roles
echo "Searching for other dashboard-related roles:"
rg --type yaml 'kind:\s*Role.*dashboard' -g '!dashboard-resourcemap.yaml'

# Search for dashboard components that might require additional permissions
echo "Searching for dashboard components that might require permissions:"
rg --type yaml 'dashboard' -g '!dashboard-resourcemap.yaml'

Length of output: 56980

🧰 Tools
🪛 yamllint

[error] 4-4: syntax error: expected , but found ''

(syntax)

packages/apps/vm-disk/Makefile (1)

5-8: 🛠️ Refactor suggestion

Refactor: Improve readability and add error handling for YAML processing.

The YAML processing commands are complex and lack error handling. Consider refactoring these commands into separate shell functions or a script for improved readability and maintainability.

Here's a suggested refactoring:

  1. Create a separate shell script, e.g., update_schema.sh:
#!/bin/bash
set -euo pipefail

update_schema_enum() {
    local file=$1
    local property=$2
    local values=$(yq e '.metadata.name' -o=json -r "$file" | yq 'split(" ") | . + [""]' -o json)
    yq -i -o json ".properties.$property.optional=true | .properties.$property.enum = $values" values.schema.json
}

update_schema_enum "../../system/kubevirt-common-instancetypes/templates/instancetypes.yaml" "instanceType"
update_schema_enum "../../system/kubevirt-common-instancetypes/templates/preferences.yaml" "instanceProfile"
  1. Update the Makefile:
generate:
	@command -v readme-generator >/dev/null 2>&1 || { echo >&2 "readme-generator is required but not installed. Aborting."; exit 1; }
	@[ -f values.yaml ] || { echo >&2 "values.yaml not found. Aborting."; exit 1; }
	@[ -f values.schema.json ] || { echo >&2 "values.schema.json not found. Aborting."; exit 1; }
	readme-generator -v values.yaml -s values.schema.json -r README.md
	./update_schema.sh

This approach improves readability, adds error handling, and makes the process more maintainable.

packages/apps/vm-instance/Makefile (1)

5-8: 🛠️ Refactor suggestion

Refactor complex commands for better readability and reliability.

The commands for updating instance types and preferences in values.schema.json are complex and may be difficult to maintain. Consider the following suggestions:

  1. Break down the commands into separate shell scripts for better readability and maintainability.
  2. Use single quotes around the yq commands to prevent unintended shell expansion.
  3. Consider using make variables instead of shell variables to avoid potential issues with shell expansion in Makefiles.

Here's a suggested refactor:

define update_schema
	yq -i -o json '.properties.$1.optional=true | .properties.$1.enum = $$(yq e ".metadata.name" -o=json -r ../../system/kubevirt-common-instancetypes/templates/$2.yaml | yq "split(\" \") | . + [\"\"]" -o json)' values.schema.json
endef

generate:
	readme-generator -v values.yaml -s values.schema.json -r README.md
	$(call update_schema,instanceType,instancetypes)
	$(call update_schema,instanceProfile,preferences)

This refactored version uses a make function to reduce duplication and improve readability. It also uses single quotes to prevent unintended shell expansion.

packages/apps/vm-instance/values.yaml (1)

18-24: ⚠️ Potential issue

LGTM: System disk and additional disks configuration added

The addition of systemDisk parameters and the disks section provides flexibility for configuring the VM's storage. This aligns well with the PR objectives.

There are two minor formatting issues:

  1. The indentation for the disk entries should be 4 spaces instead of 2.
  2. There's a trailing space on line 21.

Please apply the following changes:

 ## @param systemDisk.origin The HTTP URL for source image
 ## @param systemDisk.storage The size of the disk allocated for the virtual machine
 ## @param systemDisk.storageClass StorageClass used to store the data
-## 
+##
 disks:
-  - name: "win10-iso"
-  - name: "win10-system"
+    - name: "win10-iso"
+    - name: "win10-system"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

## @param systemDisk.origin The HTTP URL for source image
## @param systemDisk.storage The size of the disk allocated for the virtual machine
## @param systemDisk.storageClass StorageClass used to store the data
##
disks:
    - name: "win10-iso"
    - name: "win10-system"
🧰 Tools
🪛 yamllint

[error] 21-21: trailing spaces

(trailing-spaces)


[warning] 23-23: wrong indentation: expected 0 but found 2

(indentation)

packages/apps/vm-disk/values.schema.json (1)

122-126: ⚠️ Potential issue

Enhance 'externalPorts' property definition.

The 'externalPorts' property is defined as an array of integers, which is correct. However, it lacks important details that would make it more useful and clear for users. Consider the following improvements:

  1. Add a description explaining the purpose of this property and how it affects the VM configuration.
  2. Specify any constraints on the port numbers (e.g., valid range, reserved ports to avoid).
  3. Provide examples of valid configurations.
  4. Consider adding a 'minItems' and 'maxItems' to define the allowed number of external ports.
  5. If applicable, add a 'uniqueItems' flag to ensure no duplicate port numbers.

Example enhancement:

"externalPorts": {
  "type": "array",
  "description": "List of external ports to expose from the VM",
  "items": {
    "type": "integer",
    "minimum": 1,
    "maximum": 65535
  },
  "uniqueItems": true,
  "minItems": 0,
  "maxItems": 10,
  "examples": [[80, 443, 8080]]
}
packages/apps/vm-instance/values.schema.json (6)

18-130: 🛠️ Refactor suggestion

Enhance instanceType and instanceProfile definitions.

  1. Both instanceType and instanceProfile include an empty string in their enum list. This might lead to unexpected behavior. Consider removing the empty string option if it's not intentionally allowed.

  2. The optional field is not a standard JSON Schema keyword. Instead, use required at the parent object level to specify which fields are mandatory.

  3. Consider grouping the instance types by their series (cx, gn, m1, etc.) using oneOf for better organization and potential future extensibility.

Here's an example of how you could improve the instanceType definition:

"instanceType": {
  "type": "string",
  "description": "Virtual Machine instance type",
  "default": "u1.medium",
  "oneOf": [
    {
      "title": "cx Series",
      "enum": ["cx1.2xlarge", "cx1.4xlarge", "cx1.8xlarge", "cx1.large", "cx1.medium", "cx1.xlarge"]
    },
    {
      "title": "gn Series",
      "enum": ["gn1.2xlarge", "gn1.4xlarge", "gn1.8xlarge", "gn1.xlarge"]
    },
    // ... other series ...
  ]
}

Apply similar improvements to the instanceProfile property.


131-150: 🛠️ Refactor suggestion

Enhance systemDisk property definition.

Consider the following improvements for the systemDisk property:

  1. Add pattern validation for the origin URL to ensure it's a valid HTTP(S) URL.
  2. Add pattern validation for the storage size to ensure it follows the Kubernetes resource quantity format.
  3. Consider making origin a required field if it's always needed.

Here's an example of how you could improve the systemDisk definition:

"systemDisk": {
  "type": "object",
  "required": ["origin"],
  "properties": {
    "origin": {
      "type": "string",
      "description": "The HTTP URL for source image",
      "pattern": "^https?://.*$"
    },
    "storage": {
      "type": "string",
      "description": "The size of the disk allocated for the virtual machine",
      "default": "5Gi",
      "pattern": "^[0-9]+(.[0-9]+)?(Ei|Pi|Ti|Gi|Mi|Ki)?$"
    },
    "storageClass": {
      "type": "string",
      "description": "StorageClass used to store the data",
      "default": "replicated"
    }
  }
}

These changes will improve validation and ensure that the provided values are in the correct format.


151-165: 🛠️ Refactor suggestion

Improve resources property definition.

The current resources property definition can be enhanced:

  1. Empty string defaults for cpu and memory might not be ideal. Consider using more meaningful defaults or making these fields required if they should always be specified.
  2. Add pattern validation to ensure the values follow Kubernetes resource quantity format.
  3. Consider adding minimum and maximum values if there are known limits.

Here's an improved version:

"resources": {
  "type": "object",
  "required": ["cpu", "memory"],
  "properties": {
    "cpu": {
      "type": "string",
      "description": "The number of CPU cores allocated to the virtual machine",
      "pattern": "^[0-9]+(m|)?$"
    },
    "memory": {
      "type": "string",
      "description": "The amount of memory allocated to the virtual machine",
      "pattern": "^[0-9]+(.[0-9]+)?(Ei|Pi|Ti|Gi|Mi|Ki)?$"
    }
  }
}

This change ensures that valid values are provided for both CPU and memory, following Kubernetes resource quantity formats.


166-173: 🛠️ Refactor suggestion

⚠️ Potential issue

Enhance sshKeys property and fix default value.

  1. The default value for sshKeys is incorrectly defined as a string "[]". It should be an empty array.
  2. Consider adding a pattern to validate the SSH key format.

Here's an improved version:

"sshKeys": {
  "type": "array",
  "description": "List of SSH public keys for authentication. Can be a single key or a list of keys.",
  "default": [],
  "items": {
    "type": "string",
    "pattern": "^ssh-rsa AAAA[0-9A-Za-z+/]+[=]{0,3}( [^@]+@[^@]+)?$"
  }
}

This change ensures the default value is a valid empty array and adds basic validation for SSH public key format (adjust the pattern if you need to support other key types).


174-178: 🛠️ Refactor suggestion

Enhance cloudInit property documentation and validation.

While the cloudInit property is correctly defined, consider the following improvements:

  1. Expand the description to provide more context about cloud-init and its usage.
  2. Consider adding a pattern to ensure the string starts with "#cloud-config".
  3. If possible, add examples of valid cloud-init configurations in the description.

Here's an improved version:

"cloudInit": {
  "type": "string",
  "description": "cloud-init user data config. Must start with '#cloud-config'. See cloud-init documentation for more details: https://cloudinit.readthedocs.io/",
  "default": "#cloud-config\n",
  "pattern": "^#cloud-config\\n[\\s\\S]*$"
}

This change provides more context for users and ensures that the cloud-init configuration starts with the required "#cloud-config" line.


5-17: ⚠️ Potential issue

Fix the externalPorts default value.

The externalPorts property has its default value defined as a string "[]", which is incorrect for a JSON schema. It should be an empty array.

Please update the default value as follows:

   "externalPorts": {
     "type": "array",
     "description": "Specify ports to forward from outside the cluster",
-    "default": "[]",
+    "default": [],
     "items": {
       "type": "integer"
     }
   },

This change ensures that the default value is a valid empty array in JSON format.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

    "external": {
      "type": "boolean",
      "description": "Enable external access from outside the cluster",
      "default": false
    },
    "externalPorts": {
      "type": "array",
      "description": "Specify ports to forward from outside the cluster",
      "default": [],
      "items": {
        "type": "integer"
      }
    },
packages/system/kubevirt-common-instancetypes/templates/instancetypes.yaml (1)

259-401: 🛠️ Refactor suggestion

⚠️ Potential issue

GN Series needs attention: Deprecation status and limited GPU options

While the GN Series provides GPU-enabled instance types, there are several concerns:

  1. All GN Series instance types are marked as deprecated. This needs clarification:

    • What is the plan for replacing these instance types?
    • How long will they be supported?
  2. GPU configuration is limited:

    • All instance types use a single NVIDIA A400 GPU, regardless of size.
    • Consider offering different GPU models or multiple GPUs for larger instance types.
    • Add GPU-specific information (e.g., CUDA cores, GPU memory) to the annotations.
  3. There's no mention of GPU-specific features like CUDA version compatibility.

Consider revising the GN Series to address these points, possibly introducing a new, non-deprecated series with more diverse GPU options and clearer specifications. Would you like assistance in designing an updated GPU instance type series?

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
@kvaps kvaps force-pushed the instance-types branch 2 times, most recently from c5f181a to cf4c08c Compare October 15, 2024 10:56
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🧹 Outside diff range and nitpick comments (22)
packages/apps/vm-disk/values2.yaml (1)

1-7: Well-documented parameters with clear descriptions.

The comments provide clear and concise explanations for each parameter, which is excellent for maintainability and ease of use. The use of @section and @param tags suggests adherence to a specific documentation standard, promoting consistency across the project.

There's a trailing space on line 7 that should be removed for cleanliness:

-## 
+##
🧰 Tools
🪛 yamllint

[error] 7-7: trailing spaces

(trailing-spaces)

packages/apps/vm-disk/values.yaml (1)

1-7: Remove trailing space on line 7

The documentation for the Common parameters section is clear and helpful. However, there's a minor formatting issue that should be addressed.

Please remove the trailing space on line 7 to improve code cleanliness:

-## 
+##
🧰 Tools
🪛 yamllint

[error] 7-7: trailing spaces

(trailing-spaces)

packages/apps/vm-disk/values3.yaml (1)

3-7: LGTM: Clear parameter descriptions with a minor formatting issue

The parameter descriptions are well-written and informative, providing clear explanations for each configuration option.

There's a trailing space on line 7 that should be removed:

-## 
+##
🧰 Tools
🪛 yamllint

[error] 7-7: trailing spaces

(trailing-spaces)

packages/apps/vm-disk/templates/dv.yaml (3)

3-7: LGTM: Metadata section is well-structured with appropriate annotations.

The metadata section is correctly defined with useful annotations and a dynamic name based on the Helm release.

Consider adding a comment explaining the purpose of the vm-disk.cozystack.io/optical annotation for better clarity:

annotations:
  cdi.kubevirt.io/storage.bind.immediate.requested: ""
  # Indicates whether this disk is an optical drive (e.g., CD-ROM)
  vm-disk.cozystack.io/optical: "{{ .Values.optical }}"

8-16: LGTM: Spec section for content type and source is well-defined and flexible.

The content type is correctly set to kubevirt, and the conditional logic for the source allows for flexible configuration.

Consider adding a validation check for the .Values.source to ensure it's a valid YAML structure:

{{- if .Values.source }}
source:
  {{- if kindIs "string" .Values.source }}
    {{- fail "Error: .Values.source must be a YAML structure, not a string" }}
  {{- else }}
    {{- toYaml .Values.source | nindent 4 }}
  {{- end }}
{{- else }}
source:
  blank: {}
{{- end }}

This change will help prevent errors if .Values.source is accidentally set to a string value.

🧰 Tools
🪛 yamllint

[error] 11-11: syntax error: could not find expected ':'

(syntax)


17-23: LGTM: Storage configuration is well-structured and flexible.

The storage configuration allows for customizable storage requests and optional storage class specification.

Consider adding a comment to clarify the expected format of .Values.storage:

storage:
  resources:
    requests:
      # Expected format: '<size><unit>', e.g., '10Gi'
      storage: {{ .Values.storage }}

This comment will help users understand the expected input format for the storage value.

packages/apps/vm-instance/Chart.yaml (1)

Line range hint 1-26: Summary: Significant changes require further explanation

The changes to this Chart.yaml file suggest a major shift in how this chart is being managed and versioned. While the modifications themselves are straightforward, they raise important questions about the overall strategy and potential impacts on the system.

Key points to address:

  1. The reasoning behind the name change and its consistency across the project.
  2. The motivation for downgrading both the chart version and appVersion.
  3. The potential impacts on existing deployments and the upgrade path for users.
  4. Whether these changes are part of a broader restructuring of the chart or the application it deploys.

Please provide additional context to help reviewers and users understand these changes better. This context will be crucial for maintaining clear documentation and ensuring smooth transitions for users of this chart.

packages/apps/vm-instance/values.yaml (2)

9-10: Consider a more flexible default for running.

The explicit setting of running: true improves clarity. However, consider if this should always be the default state for all VMs. You might want to make this configurable or set it to false by default for better control over resource usage.


Line range hint 1-8: Review unchanged sections for potential updates.

The external, externalPorts, sshKeys, and cloudInit sections remain unchanged. While they don't seem to conflict with the new changes, it might be worth considering if any of these need updates to align with the new instance types and profiles.

For example:

  1. Should externalPorts be configurable based on the instance type or profile?
  2. Does the cloudInit configuration need any adjustments for different instance types?

Please review these sections to ensure they're still appropriate with the new instance type and profile system.

Also applies to: 31-50

🧰 Tools
🪛 yamllint

[error] 21-21: trailing spaces

(trailing-spaces)


[warning] 23-23: wrong indentation: expected 0 but found 2

(indentation)

packages/apps/vm-instance/templates/vm.yaml (5)

1-6: LGTM! Consider enhancing error messages.

The validation logic for instance types and profiles is well-implemented. It effectively prevents the creation of VMs with non-existent configurations.

Consider enhancing the error messages to include guidance on how to resolve the issue. For example:

{{- fail (printf "Specified instancetype '%s' does not exist in the cluster. Please check available instance types and update the configuration." .Values.instanceType) }}

This provides more context and actionable information to the user.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)


8-25: LGTM! Consider adding more metadata labels.

The VM metadata and spec section is well-structured and follows KubeVirt's VirtualMachine CRD specification. The conditional blocks for instance type and profile provide good flexibility.

Consider adding more metadata labels to improve resource management and querying. For example:

metadata:
  name: {{ include "virtual-machine.fullname" . }}
  labels:
    {{- include "virtual-machine.labels" . | nindent 4 }}
    app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
    {{- with .Values.additionalLabels }}
    {{- toYaml . | nindent 4 }}
    {{- end }}

This allows for version tracking and custom labels, enhancing resource management capabilities.


34-71: LGTM! Consider enhancing disk and network configurations.

The VM domain specification section is well-structured with flexible resource allocation and dynamic disk configuration.

Consider the following enhancements:

  1. Disk configuration:

    • Add error handling for cases where disk lookup fails for reasons other than non-existence.
    • Consider allowing customization of disk bus type.
  2. Network interface:

    • Allow for multiple network interfaces.
    • Provide options for different network types (e.g., multus, masquerade).

Example for network interfaces:

interfaces:
{{- range .Values.networks }}
- name: {{ .name }}
  {{ .type | default "bridge" }}: {}
{{- end }}

This would provide more flexibility in network configuration.


81-93: LGTM! Consider improving volume naming consistency.

The volumes configuration section is well-implemented, with dynamic creation of volumes and appropriate use of DataVolumes.

Consider standardizing the naming convention for volumes. For example:

volumes:
{{- range .Values.disks }}
- name: disk-{{ .name }}
  dataVolume:
    name: {{ include "virtual-machine.fullname" $ }}-disk-{{ .name }}
{{- end }}
{{- if or .Values.sshKeys .Values.cloudInit }}
- name: cloudinitdisk
  cloudInitNoCloud:
    secretRef:
      name: {{ include "virtual-machine.fullname" . }}-cloud-init
{{- end }}

This ensures consistency in naming across different resources and makes it easier to track related resources.


1-1: Consider adding a YAML lint directive to suppress false positive.

The yamllint error is a false positive due to the Go templating syntax at the beginning of the file. The actual YAML content starts correctly at line 8.

To suppress this warning, consider adding a yamllint directive at the top of the file:

# yamllint disable-line rule:document-start
{{- if and .Values.instanceType (not (lookup "instancetype.kubevirt.io/v1beta1" "VirtualMachineClusterInstancetype" "" .Values.instanceType)) }}

This will instruct yamllint to ignore the document-start rule for this line, preventing the false positive warning.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

packages/apps/vm-disk/README.md (4)

5-10: Consider adding a brief explanation of KubeVirt

The deployment details section provides useful information and links. However, it might be helpful to include a brief explanation of what KubeVirt is for readers who may not be familiar with it. This would provide more context for why KubeVirt is used for managing virtual machines in a Kubernetes environment.

Consider adding a sentence like:
"KubeVirt is an add-on that allows you to run virtual machines on your Kubernetes cluster alongside containers."


12-33: Improve code block formatting and consider adding examples

The section on accessing virtual machines is informative and provides useful commands. However, there are a couple of improvements that could be made:

  1. The code blocks are missing language specifiers. Adding bash after the opening triple backticks would enable syntax highlighting for better readability.

  2. Consider adding example commands with placeholder values to make it easier for users to understand how to use these commands in practice.

Here's an example of how you could improve the SSH command:

virtctl ssh username@vm-name
🧰 Tools
🪛 Markdownlint

19-19: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


25-25: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


31-31: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


35-44: Improve table formatting for better compatibility

The parameters table is informative and well-structured. However, to ensure better compatibility across different Markdown renderers, consider adding leading and trailing pipes to each row of the table.

Here's how the improved table structure would look:

| Name           | Description                                            | Value        |
|----------------|--------------------------------------------------------|--------------|
| `source`       | The source image location used to create a disk        | `{}`         |
| `optical`      | Defines is disk should be considered as optical        | `false`      |
| `storage`      | The size of the disk allocated for the virtual machine | `5Gi`        |
| `storageClass` | StorageClass used to store the data                    | `replicated` |

46-152: Address minor grammatical issues and improve clarity

The VM series descriptions are comprehensive and informative. However, there are a few minor grammatical and stylistic issues that could be addressed to improve clarity:

  1. Line 61: Change "if excess compute resources are available" to "if excess compute resources are available."
  2. Line 79: Change "Memory is over-committed in order to achieve" to "Memory is over-committed to achieve"
  3. Line 92: Change "In order to ensure this," to "To ensure this,"
  4. Line 101, 123, 143: Change "Hugepages are used in order to improve memory performance" to "Hugepages are used to improve memory performance"
  5. Line 104, 146: Change "in order to provide fixed and high compute guarantees" to "to provide fixed and high compute guarantees"
  6. Line 107, 149: Change "in order to reduce emaulation related impact" to "to reduce emulation-related impact"
  7. Line 109: Change "in order to optimize guest sided cache utilization" to "to optimize guest-side cache utilization"

Additionally, consider adding a brief explanation of what "Hugepages" are for readers who might not be familiar with the term.

🧰 Tools
🪛 LanguageTool

[typographical] ~61-~61: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~77-~77: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~79-~79: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~92-~92: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~101-~101: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~104-~104: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~107-~107: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~109-~109: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~123-~123: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~126-~126: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~143-~143: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~146-~146: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~149-~149: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)

packages/apps/vm-instance/README.md (4)

12-33: Accessing virtual machine: Clear instructions with a minor improvement suggestion.

This section provides clear instructions on how to access the virtual machine using the virtctl tool. The commands for accessing the serial console, VNC, and SSH are well-explained.

Consider adding language specifications to the code blocks for better syntax highlighting. For example:

-```
+```bash
 virtctl console <vm>

Apply this change to all three code blocks in this section.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Markdownlint</summary><blockquote>

19-19: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

25-25: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

31-31: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</blockquote></details>

</details>

---

`35-53`: **Parameters: Comprehensive list with formatting improvements needed.**

The Parameters section provides a comprehensive list of common parameters, their descriptions, and default values. This information is valuable for users configuring their virtual machines.



To improve the table formatting and address the static analysis hints, consider the following changes:

1. Add leading and trailing pipes to each row of the table.
2. Ensure consistent column count across all rows.

For example:

```diff
-| Name                      | Description                                                                        | Value            |
-| ------------------------- | ---------------------------------------------------------------------------------- | ---------------- |
-| `external`                | Enable external access from outside the cluster                                    | `false`          |
+| Name                      | Description                                                                        | Value            |
+| ------------------------- | ---------------------------------------------------------------------------------- | ---------------- |
+| `external`                | Enable external access from outside the cluster                                    | `false`          |

Apply this change to all rows in the table.

🧰 Tools
🪛 LanguageTool

[style] ~51-~51: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. | `[...

(MISSING_IT_THERE)

🪛 Markdownlint

52-52: Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


53-53: Expected: leading_and_trailing; Actual: trailing_only; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


53-53: Expected: 3; Actual: 1; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


168-268: Resources tables: Comprehensive information with formatting improvements needed.

The Resources tables provide extensive information about instancetype resources and preference resources, including various VM configurations and supported operating systems. This information is crucial for users selecting the appropriate VM setup.

To improve the table formatting and address the static analysis hints, consider the following changes:

  1. Add leading and trailing pipes to each row of both tables.
  2. Ensure consistent column count across all rows.

For example:

-Name | vCPUs | Memory
------|-------|-------
-cx1.2xlarge  |  8  |  16Gi
+| Name | vCPUs | Memory |
+|------|-------|--------|
+| cx1.2xlarge | 8 | 16Gi |

Apply this change to all rows in both tables.

🧰 Tools
🪛 Markdownlint

172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


267-267: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


267-267: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


268-268: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


268-268: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


1-268: Overall: Excellent README with minor formatting improvements needed.

This README provides comprehensive and well-structured information about the Virtual Machine component within the KubeVirt ecosystem. It covers all necessary aspects, including introduction, deployment details, access methods, parameters, VM series descriptions, and resource tables.

The content is informative and will be valuable for users working with this component. The explanations are clear, and the structure makes it easy to find specific information.

To further improve the document, consider addressing the following minor formatting issues:

  1. Add language specifications to code blocks for better syntax highlighting.
  2. Improve table formatting by adding leading and trailing pipes to each row and ensuring consistent column counts.

These small changes will enhance the overall presentation and readability of the document.

🧰 Tools
🪛 LanguageTool

[style] ~51-~51: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. | `[...

(MISSING_IT_THERE)


[typographical] ~70-~70: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~86-~86: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~88-~88: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~101-~101: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~110-~110: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~113-~113: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~116-~116: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~118-~118: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~132-~132: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~135-~135: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~152-~152: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~155-~155: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~158-~158: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)

🪛 Markdownlint

19-19: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


25-25: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


31-31: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


52-52: Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


53-53: Expected: leading_and_trailing; Actual: trailing_only; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


267-267: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


267-267: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


268-268: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


268-268: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


53-53: Expected: 3; Actual: 1; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 4aa4c47 and cf4c08c.

⛔ Files ignored due to path filters (2)
  • packages/apps/vm-disk/logos/disk.svg is excluded by !**/*.svg
  • packages/apps/vm-instance/logos/vm.svg is excluded by !**/*.svg
📒 Files selected for processing (22)
  • packages/apps/versions_map (2 hunks)
  • packages/apps/vm-disk/Chart.yaml (1 hunks)
  • packages/apps/vm-disk/Makefile (1 hunks)
  • packages/apps/vm-disk/README.md (1 hunks)
  • packages/apps/vm-disk/hack/update-instance-types.sh (1 hunks)
  • packages/apps/vm-disk/templates/NOTES.txt (1 hunks)
  • packages/apps/vm-disk/templates/dashboard-resourcemap.yaml (1 hunks)
  • packages/apps/vm-disk/templates/dv.yaml (1 hunks)
  • packages/apps/vm-disk/values.schema.json (1 hunks)
  • packages/apps/vm-disk/values.yaml (1 hunks)
  • packages/apps/vm-disk/values2.yaml (1 hunks)
  • packages/apps/vm-disk/values3.yaml (1 hunks)
  • packages/apps/vm-instance/.helmignore (1 hunks)
  • packages/apps/vm-instance/Chart.yaml (2 hunks)
  • packages/apps/vm-instance/Makefile (1 hunks)
  • packages/apps/vm-instance/README.md (1 hunks)
  • packages/apps/vm-instance/hack/update-instance-types.sh (1 hunks)
  • packages/apps/vm-instance/templates/vm.yaml (1 hunks)
  • packages/apps/vm-instance/values.schema.json (1 hunks)
  • packages/apps/vm-instance/values.yaml (1 hunks)
  • packages/system/kubevirt-common-instancetypes/Makefile (1 hunks)
  • packages/system/kubevirt-common-instancetypes/templates/preferences.yaml (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (10)
  • packages/apps/vm-disk/Chart.yaml
  • packages/apps/vm-disk/Makefile
  • packages/apps/vm-disk/hack/update-instance-types.sh
  • packages/apps/vm-disk/templates/NOTES.txt
  • packages/apps/vm-disk/values.schema.json
  • packages/apps/vm-instance/.helmignore
  • packages/apps/vm-instance/Makefile
  • packages/apps/vm-instance/hack/update-instance-types.sh
  • packages/apps/vm-instance/values.schema.json
  • packages/system/kubevirt-common-instancetypes/Makefile
🧰 Additional context used
🪛 LanguageTool
packages/apps/vm-disk/README.md

[typographical] ~61-~61: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~77-~77: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~79-~79: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~92-~92: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~101-~101: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~104-~104: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~107-~107: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~109-~109: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~123-~123: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~126-~126: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~143-~143: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~146-~146: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~149-~149: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)

packages/apps/vm-instance/README.md

[style] ~51-~51: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. | `[...

(MISSING_IT_THERE)


[typographical] ~70-~70: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~86-~86: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~88-~88: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~101-~101: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~110-~110: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~113-~113: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~116-~116: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~118-~118: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~132-~132: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~135-~135: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~152-~152: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~155-~155: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~158-~158: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)

🪛 Markdownlint
packages/apps/vm-disk/README.md

19-19: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


25-25: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


31-31: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


163-163: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


163-163: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


164-164: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


164-164: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


165-165: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


165-165: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


166-166: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


166-166: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


167-167: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


167-167: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


168-168: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


168-168: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


169-169: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


169-169: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


170-170: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


170-170: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


171-171: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


171-171: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


222-222: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


222-222: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


223-223: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


223-223: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


224-224: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


224-224: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)

packages/apps/vm-instance/README.md

19-19: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


25-25: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


31-31: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


52-52: Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


53-53: Expected: leading_and_trailing; Actual: trailing_only; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


267-267: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


267-267: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


268-268: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


268-268: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


53-53: Expected: 3; Actual: 1; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)

🪛 yamllint
packages/apps/vm-disk/templates/dashboard-resourcemap.yaml

[error] 4-4: syntax error: expected , but found ''

(syntax)

packages/apps/vm-disk/templates/dv.yaml

[error] 11-11: syntax error: could not find expected ':'

(syntax)

packages/apps/vm-disk/values.yaml

[error] 7-7: trailing spaces

(trailing-spaces)

packages/apps/vm-disk/values2.yaml

[error] 7-7: trailing spaces

(trailing-spaces)

packages/apps/vm-disk/values3.yaml

[error] 7-7: trailing spaces

(trailing-spaces)

packages/apps/vm-instance/templates/vm.yaml

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

packages/apps/vm-instance/values.yaml

[error] 21-21: trailing spaces

(trailing-spaces)


[warning] 23-23: wrong indentation: expected 0 but found 2

(indentation)

🔇 Additional comments (40)
packages/apps/vm-disk/templates/dashboard-resourcemap.yaml (3)

1-12: LGTM: Role definition is well-structured and follows Kubernetes best practices.

The Role resource is correctly defined with appropriate apiVersion and kind. It grants specific, limited permissions for 'datavolumes' in the 'cdi.kubevirt.io' API group, adhering to the principle of least privilege. The use of "get", "list", and "watch" verbs is suitable for read-only access to the specified resource.

🧰 Tools
🪛 yamllint

[error] 4-4: syntax error: expected , but found ''

(syntax)


4-4: Note: Ignore yamllint syntax error for Helm template.

The yamllint tool reported a syntax error on this line, but it's a false positive due to the Helm templating syntax {{ .Release.Name }}. YAML linters often struggle with template placeholders. This is not an actual error in your Kubernetes manifest.

🧰 Tools
🪛 yamllint

[error] 4-4: syntax error: expected , but found ''

(syntax)


4-4: Verify Helm template rendering for dynamic values.

The Role name and resourceNames use Helm templating with {{ .Release.Name }}. This approach allows for dynamic naming based on the release, which is good for flexibility and avoiding naming conflicts. However, ensure that:

  1. The release name is always set and follows a consistent naming convention.
  2. The resulting names meet Kubernetes naming requirements (e.g., lowercase, alphanumeric characters, '-' allowed).

To confirm proper rendering, you can use the helm template command:

Also applies to: 11-11

🧰 Tools
🪛 yamllint

[error] 4-4: syntax error: expected , but found ''

(syntax)

packages/apps/vm-disk/values.yaml (4)

8-10: Clarify usage of the source parameter

The source parameter is defined as an object, but its potential options (http and upload) are commented out. This might be confusing for users.

Could you please clarify:

  1. Is leaving the source object empty a valid configuration?
  2. Should users uncomment and configure one of the options (http or upload)?
  3. Are there any other valid options for the source parameter?

Consider adding a comment explaining the expected usage of this parameter to improve user understanding.


11-11: LGTM: optical parameter

The optical parameter is correctly set to false, which aligns with the description provided in the comments.


12-12: LGTM: storage parameter

The storage parameter is set to 5Gi, which is a reasonable default disk size. The use of Gi (Gibibytes) is consistent with Kubernetes resource specifications.


13-13: Verify the "replicated" storage class

The storageClass parameter is set to "replicated", which suggests that the default storage class uses replication for data redundancy. This is generally a good practice for VM disks.

Please ensure that:

  1. The "replicated" storage class exists in the target Kubernetes clusters.
  2. This storage class meets the performance and reliability requirements for VM disks.

You may want to add a comment explaining the characteristics of this storage class to help users understand its implications.

packages/apps/vm-disk/values3.yaml (1)

1-2: LGTM: Well-structured section header

The "Common parameters" section header is clear and follows good documentation practices.

packages/apps/vm-disk/templates/dv.yaml (2)

1-2: LGTM: API version and resource kind are correctly specified.

The API version cdi.kubevirt.io/v1beta1 and resource kind DataVolume are correctly defined for creating a DataVolume resource in KubeVirt/CDI.


11-11: Note: Ignore yamllint error for Helm template syntax.

The yamllint tool reported a syntax error on this line, but it's a false positive. The {{- if .Values.source }} is valid Helm template syntax and will be processed before YAML parsing. No action is required to address this error.

🧰 Tools
🪛 yamllint

[error] 11-11: syntax error: could not find expected ':'

(syntax)

packages/apps/vm-instance/Chart.yaml (3)

20-20: Explain the reasoning behind the version downgrade.

The chart version has been downgraded from 0.4.0 to 0.1.0. This is an unusual change as versions typically increase. Please provide context for this change:

  1. Is this a complete rewrite or major refactor of the chart?
  2. Are we resetting the versioning scheme for a specific reason?
  3. How does this impact existing deployments or upgrades?

It's crucial to understand the motivation behind this change to ensure proper version management and to avoid potential confusion for users of this chart.


3-3: Please clarify the rationale behind the name change.

The chart name has been changed from "virtual-machine" to "vm-instance". While this might align better with a new naming convention, it's important to consider the following:

  1. Does this change affect any other parts of the system that might be referencing this chart?
  2. Is this part of a larger renaming effort?
  3. Have all necessary documentation and references been updated to reflect this change?

To ensure consistency, let's check for any remaining references to the old name:

#!/bin/bash
# Search for references to the old name "virtual-machine" in yaml files
rg --type yaml "name:\s*virtual-machine" -g "!Chart.yaml"

26-26: Clarify the significant change in appVersion.

The appVersion has been changed from "1.16.1" to "0.1.0", which is a substantial downgrade. This raises several questions:

  1. Does this reflect a major change in the underlying application?
  2. How does this align with the chart version change?
  3. Are there any compatibility issues to be aware of with this change?

Additionally, the appVersion now matches the chart version. Is this intentional, and does it indicate a new versioning strategy where the chart and application versions will be kept in sync?

Let's check if this change is consistent across other files:

✅ Verification successful

appVersion Downgrade Verified and Aligned with Chart Version

The appVersion change from "1.16.1" to "0.1.0" is isolated to packages/apps/vm-instance/Chart.yaml. This aligns the application version with the chart version, indicating a new versioning strategy to keep both in sync. No compatibility issues were found as there are no other references to the old appVersion.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Search for references to the old appVersion "1.16.1" in yaml files
rg --type yaml "appVersion:\s*\"1.16.1\"" -g "!Chart.yaml"

Length of output: 59


Script:

#!/bin/bash
# Re-run the search for references to the old appVersion "1.16.1" in YAML files, excluding Chart.yaml
rg --type yaml 'appVersion:\s*"1\.16\.1"' -g '!Chart.yaml'

Length of output: 60

packages/apps/vm-instance/values.yaml (2)

26-30: Clarify handling of empty resource values.

The cpu and memory values are now set to empty strings. This change might be related to the introduction of instance types, which could define these resources. However, it's not clear how these empty values will be interpreted.

Please clarify:

  1. How will these empty values be handled?
  2. Will they default to values defined by the instanceType?
  3. Should we consider removing these fields if they're no longer needed?

Consider adding comments to explain the expected behavior or remove these fields if they're redundant.

To verify how these empty values are handled, you can run the following script:

#!/bin/bash
# Description: Search for handling of empty resource values in the codebase

# Test: Search for handling of empty CPU values
echo "Searching for handling of empty CPU values:"
rg --type go 'cpu.*=.*""' -C 5

# Test: Search for handling of empty memory values
echo "Searching for handling of empty memory values:"
rg --type go 'memory.*=.*""' -C 5

# Note: Review the output to understand how empty resource values are processed

12-16: Verify compatibility of default instanceType and instanceProfile.

The addition of instanceType and instanceProfile parameters aligns well with the PR objectives. The default values look reasonable, but please ensure that "u1.medium" is compatible with the "windows.10.virtio" profile.

To verify the compatibility, you can run the following script:

✅ Verification successful

Default instanceType and instanceProfile are compatible.

The definitions for u1.medium and windows.10.virtio have been successfully located and are compatible with each other.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify that the default instanceType is compatible with the default instanceProfile

# Test: Search for the definition of u1.medium instance type
echo "Searching for u1.medium instance type definition:"
rg --type yaml "u1\.medium" -C 5

# Test: Search for the definition of windows.10.virtio profile
echo "Searching for windows.10.virtio profile definition:"
rg --type yaml "windows\.10\.virtio" -C 5

# Note: Review the output to ensure that the instance type and profile are compatible

Length of output: 715


Script:

#!/bin/bash
# Description: Verify that the default instanceType is compatible with the default instanceProfile

# Test: Search for the definition of u1.medium instance type
echo "Searching for u1.medium instance type definition:"
rg --type yaml "u1\.medium" -C 5

# Test: Search for the definition of windows.10.virtio profile
echo "Searching for windows.10.virtio profile definition:"
rg --type yaml "windows\.10\.virtio" -C 5

# Note: Review the output to ensure that the instance type and profile are compatible

Length of output: 4790

packages/apps/vm-instance/templates/vm.yaml (2)

27-33: LGTM! Well-structured template metadata.

The VM template metadata and annotations section is well-implemented. The inclusion of the live migration annotation and the use of a helper function for labels are good practices.


72-80: LGTM! Secure SSH key configuration.

The SSH key configuration section is well-implemented. It securely manages SSH keys using Kubernetes secrets and appropriately uses cloud-init for key propagation.

packages/apps/vm-disk/README.md (1)

1-259: Excellent documentation with minor improvements suggested

This README file provides comprehensive and well-structured information about virtual machines, their configurations, and supported operating systems. The document successfully covers key aspects such as deployment details, access methods, various VM series, and supported guest operating systems.

The suggested improvements throughout the review are primarily focused on enhancing readability, consistency, and minor grammatical issues. Implementing these changes will further elevate the quality of this documentation, making it even more user-friendly and professional.

Overall, this is a valuable resource for users working with virtual machines in the Cozystack environment. Great job on creating such a detailed and informative document!

🧰 Tools
🪛 LanguageTool

[typographical] ~61-~61: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~77-~77: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~79-~79: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~92-~92: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~101-~101: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~104-~104: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~107-~107: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~109-~109: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~123-~123: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~126-~126: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~143-~143: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~146-~146: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~149-~149: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)

🪛 Markdownlint

19-19: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


25-25: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


31-31: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


163-163: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


163-163: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


164-164: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


164-164: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


165-165: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


165-165: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


166-166: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


166-166: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


167-167: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


167-167: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


168-168: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


168-168: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


169-169: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


169-169: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


170-170: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


170-170: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


171-171: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


171-171: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


222-222: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


222-222: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


223-223: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


223-223: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


224-224: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


224-224: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)

packages/apps/vm-instance/README.md (3)

1-10: Introduction and Deployment Details: Well-structured and informative.

The introduction provides a clear definition of a Virtual Machine and its purpose. The deployment details section effectively introduces KubeVirt and provides useful links for further information. This section serves as a good starting point for users new to the concept.


55-161: VM Series descriptions: Comprehensive and well-explained.

This section provides detailed descriptions of various VM series (U, O, CX, M, RT), including their characteristics and intended use cases. The information is well-structured and offers valuable insights into the different options available to users.

The comprehensive explanations of each series will help users make informed decisions when selecting the appropriate VM type for their needs.

🧰 Tools
🪛 LanguageTool

[typographical] ~70-~70: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~86-~86: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~88-~88: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~101-~101: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~110-~110: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~113-~113: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~116-~116: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~118-~118: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~132-~132: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~135-~135: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~152-~152: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~155-~155: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~158-~158: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


163-166: Development section: Concise and informative.

This brief section effectively directs users to the DEVELOPMENT.md file for information on customizing or creating instancetypes and preferences. It provides a clear next step for users interested in development.

packages/system/kubevirt-common-instancetypes/templates/preferences.yaml (19)

1-25: LGTM: Well-defined Alpine Linux preference

The VirtualMachineClusterPreference for Alpine Linux is well-structured and appropriate. It correctly uses virtio for disk and interface, which is good for performance. The minimal resource requirements (1 CPU, 512Mi memory) align well with Alpine's lightweight nature.


26-52: Approved: CentOS 7 preference with deprecation notice

The VirtualMachineClusterPreference for CentOS 7 is well-defined and consistent with the Alpine preference structure. The inclusion of the deprecation label (instancetype.kubevirt.io/deprecated: "true") is crucial, as CentOS 7 has reached end-of-life. The resource requirements (1 CPU, 1Gi memory) are appropriate for a basic CentOS 7 installation.


83-110: Approved: Enhanced CentOS Stream 10 preference

The VirtualMachineClusterPreference for CentOS Stream 10 is well-defined and includes several improvements:

  1. The addition of preferredDiskDedicatedIoThread can enhance I/O performance.
  2. The inclusion of preferredRng improves security by ensuring a good source of randomness.
  3. The increased memory requirement (1.5Gi) is appropriate for a newer OS version.

These enhancements demonstrate good practices in virtual machine configuration, balancing performance, security, and resource allocation.


232-259: Approved: Well-configured CentOS Stream 9 preference

The VirtualMachineClusterPreference for CentOS Stream 9 is well-defined and includes several positive aspects:

  1. The inclusion of enhanced features like preferredDiskDedicatedIoThread and preferredRng, which can improve performance and security.
  2. Consistent resource requirements with other CentOS Stream versions (1 CPU, 1.5Gi memory).
  3. Correct omission of the deprecation label, as CentOS Stream 9 is a current, supported version.

This configuration demonstrates good practices in virtual machine configuration, balancing performance, security, and resource allocation for a current OS version.


325-350: Approved: Well-configured Cirros preference

The VirtualMachineClusterPreference for Cirros is excellently configured:

  1. The minimal resource requirements (1 CPU, 256Mi memory) are perfectly aligned with Cirros's nature as a very lightweight Linux distribution.
  2. The use of virtio for both disk and interface models is good for performance.
  3. The simplified configuration, compared to other distributions, is appropriate for Cirros's minimal design.

This preference demonstrates a good understanding of Cirros's characteristics and requirements, providing an efficient setup for this lightweight OS.


351-384: Approved: Modern and secure Fedora (amd64) preference

The VirtualMachineClusterPreference for Fedora (amd64) is excellently configured with modern and secure features:

  1. Enhanced performance features: network interface multi-queue support and RNG.
  2. Secure boot with EFI, providing an additional layer of security.
  3. Appropriate resource allocation (1 CPU, 2Gi memory) for a full-featured modern Linux distribution.
  4. Utilization of modern virtualization features, including SMM (System Management Mode).

This configuration demonstrates a good balance between performance, security, and resource allocation, taking full advantage of modern virtualization capabilities for Fedora on amd64 architecture.


414-440: Approved: Well-configured OpenSUSE Leap preference

The VirtualMachineClusterPreference for OpenSUSE Leap is well-defined and includes several positive aspects:

  1. Consistent resource allocation (1 CPU, 2Gi memory) with other modern Linux distributions, which is appropriate for a full-featured OS.
  2. Inclusion of RNG support, enhancing security.
  3. Use of virtio for both disk and interface models, which is good for performance.

This configuration demonstrates good practices in virtual machine configuration, balancing performance, security, and resource allocation for OpenSUSE Leap. It's consistent with the approach taken for other modern Linux distributions in this file.


291-324: Approved with suggestion: CentOS Stream 9 DPDK preference

The VirtualMachineClusterPreference for CentOS Stream 9 with DPDK support is well-configured. It appropriately includes:

  1. CPU topology preferences and network interface multi-queue support, which are suitable for DPDK workloads.
  2. Increased CPU requirement (2 CPUs), beneficial for DPDK's multi-core usage.
  3. Enhanced features like preferredDiskDedicatedIoThread and preferredRng, improving performance and security.

However, consider the following:

Review the memory requirement (1.5Gi) for DPDK workloads. DPDK applications often benefit from larger memory allocations. Consider increasing this value to ensure optimal performance for DPDK workloads. To verify typical DPDK memory requirements, you can run:

#!/bin/bash
# Search for DPDK memory requirements in the repository
rg --type md "DPDK.*memory.*requirements" -A 5

111-141: Approved with suggestion: CentOS Stream 10 Desktop preference

The VirtualMachineClusterPreference for CentOS Stream 10 Desktop is well-structured and correctly includes desktop-specific settings. It maintains the performance and security enhancements from the non-desktop version, which is excellent.

However, similar to the CentOS 7 Desktop preference:

Consider reviewing the resource requirements (1 CPU, 1.5Gi memory) for a desktop environment. These might be low for a smooth desktop experience, especially for a newer OS version. To verify typical CentOS Stream 10 desktop requirements, you can run:

#!/bin/bash
# Search for CentOS Stream 10 system requirements in the repository
rg --type md "CentOS Stream 10.*system requirements" -A 5

531-556: Approved with suggestion: RHEL 7 preference

The VirtualMachineClusterPreference for RHEL 7 is appropriately configured:

  1. The simpler configuration, without advanced features, is suitable for this older OS version.
  2. Lower resource requirements (1 CPU, 1Gi memory) are appropriate for RHEL 7.
  3. Use of virtio for disk and interface models is good for performance.

However, consider the following enhancement:

Given that RHEL 7 is approaching end of life, consider adding a deprecation label (e.g., instancetype.kubevirt.io/deprecated: "true") to this preference. This would alert users to the aging status of this OS version. To verify the current support status of RHEL 7, you can run:

#!/bin/bash
# Search for information about RHEL 7 support status
rg --type md "

---

`441-467`: **Approved with suggestion: OpenSUSE Tumbleweed preference**

The VirtualMachineClusterPreference for OpenSUSE Tumbleweed is well-configured, maintaining consistency with the OpenSUSE Leap preference. This includes appropriate resource allocation (1 CPU, 2Gi memory), RNG support for enhanced security, and the use of virtio for disk and interface models.

However, consider the following enhancement:


Given that Tumbleweed is a rolling release distribution, it might support newer features or benefit from different optimizations compared to Leap. Consider researching if there are any Tumbleweed-specific optimizations or newer features that could be incorporated. To investigate this, you can run:

---

`502-530`: **Approved with suggestions: RHEL 10 Beta (arm64) preference**

The VirtualMachineClusterPreference for RHEL 10 Beta (arm64) is well-configured, maintaining consistency with the amd64 version in terms of resources (1 CPU, 1.5Gi memory) and most features. It includes important performance enhancements like dedicated I/O thread and RNG.

However, consider the following points:

1. The absence of SMM (System Management Mode) and EFI secure boot, which are present in the amd64 version, might be due to differences in arm64 support for these features. It's worth verifying if these features are supported for RHEL 10 on arm64 and including them if possible.

2. As with the amd64 version, the resource requirements seem a bit low for a modern RHEL version.



To address these points, you can run:

---

`385-413`: **Approved with suggestion: Fedora (arm64) preference**

The VirtualMachineClusterPreference for Fedora (arm64) is well-configured, maintaining consistency with the amd64 version in terms of resources (1 CPU, 2Gi memory) and most features. It includes important performance enhancements like network interface multi-queue support and RNG.

However, there's one point to consider:


The absence of SMM (System Management Mode) and EFI secure boot, which are present in the amd64 version, might be due to differences in arm64 support for these features. It's worth verifying if these features are supported for Fedora on arm64 and including them if possible. To check this, you can run:

---

`260-290`: **Approved with suggestion: CentOS Stream 9 Desktop preference**

The VirtualMachineClusterPreference for CentOS Stream 9 Desktop is well-structured and correctly includes desktop-specific settings. It maintains the performance and security enhancements from the non-desktop version, which is excellent.

However, similar to previous desktop preferences:


Consider reviewing the resource requirements (1 CPU, 1.5Gi memory) for a desktop environment. These might be low for a smooth desktop experience, especially for a newer OS version. To verify typical CentOS Stream 9 desktop requirements, you can run:

---

`199-231`: **Approved with suggestion: CentOS Stream 8 DPDK preference**

The VirtualMachineClusterPreference for CentOS Stream 8 with DPDK support is well-configured. The CPU topology preferences and network interface multi-queue support are appropriate for DPDK workloads. The increased CPU requirement (2 CPUs) is suitable for DPDK, which benefits from multiple cores.

However, consider the following:


Review the memory requirement (1.5Gi) for DPDK workloads. DPDK applications often benefit from larger memory allocations. Consider increasing this value to ensure optimal performance for DPDK workloads. To verify typical DPDK memory requirements, you can run:

---

`169-198`: **Approved with suggestions: CentOS Stream 8 Desktop preference**

The VirtualMachineClusterPreference for CentOS Stream 8 Desktop is well-structured and correctly includes desktop-specific settings. The deprecation label is appropriately maintained.

Consider the following enhancements:

1. Review the resource requirements (1 CPU, 1.5Gi memory) for a desktop environment. These might be low for a smooth desktop experience.

2. If supported in CentOS Stream 8, consider adding the enhanced features present in the CentOS Stream 10 preference, such as `preferredDiskDedicatedIoThread` and `preferredRng`.



To verify CentOS Stream 8 desktop requirements and feature support, you can run:

---

`53-82`: **Approved with suggestion: CentOS 7 Desktop preference**

The VirtualMachineClusterPreference for CentOS 7 Desktop is well-structured and correctly includes desktop-specific settings like input device preferences. The deprecation label is appropriately maintained.

However, consider reviewing the resource requirements:


The current requirements (1 CPU, 1Gi memory) might be low for a desktop environment. Consider increasing these values to ensure a smooth desktop experience. To verify typical CentOS 7 desktop requirements, you can run:

---

`468-501`: **Approved with suggestion: RHEL 10 Beta (amd64) preference**

The VirtualMachineClusterPreference for RHEL 10 Beta (amd64) is well-configured with advanced features:

1. Inclusion of SMM, EFI secure boot, and RNG, enhancing security.
2. Use of virtio for disk and interface models, with dedicated I/O thread for disk, which can improve performance.
3. Utilization of modern virtualization features.

However, consider the following:


The resource requirements (1 CPU, 1.5Gi memory) seem a bit low for a modern RHEL version, especially compared to the Fedora configuration (1 CPU, 2Gi memory). Consider reviewing these requirements to ensure they're sufficient for RHEL 10. To verify RHEL 10 system requirements, you can run:

---

`142-168`: **Approved with suggestion: CentOS Stream 8 preference**

The VirtualMachineClusterPreference for CentOS Stream 8 is well-structured and appropriately includes a deprecation label. The resource requirements are consistent with other CentOS Stream versions.

However, consider the following enhancement:


If supported in CentOS Stream 8, consider adding the enhanced features present in the CentOS Stream 10 preference, such as `preferredDiskDedicatedIoThread` and `preferredRng`. These could improve performance and security. To verify CentOS Stream 8 feature support, you can run:

</blockquote></details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

Comment on lines 8 to 12
source:
upload: {}
optical: true
storage: 10Gi
storageClass: replicated
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

Inconsistent default storage sizes detected.

The default storage size is set to 10Gi in multiple parts of the codebase. However, in packages/apps/vm-disk/values.yaml, the storage sizes are set to 5Gi and 50Gi.

  • Action Required:
    • Standardize the storage size to 10Gi in vm-disk if there are no specific reasons for the deviation.
    • Document the reasons for different storage sizes if they are intentional based on unique requirements.
🔗 Analysis chain

Parameter definitions look good, with a few considerations.

The parameter definitions align well with the provided documentation. Here are some observations and suggestions:

  1. The source parameter's structure allows for future expansion of upload options, which is good for flexibility.
  2. The default storage size of 10Gi seems reasonable, but it's worth verifying if this is an appropriate default for most use cases.
  3. Setting storageClass to replicated suggests data redundancy, which is good for reliability.

Consider the following suggestions:

  1. The optical parameter is set to true by default. This might not be suitable for all use cases. Consider setting it to false by default unless there's a specific reason for it to be true.

  2. Verify that 10Gi is an appropriate default storage size for most use cases. If it's too large or small, consider adjusting it or providing a comment explaining the choice.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the usage of storage size in other parts of the codebase

# Test: Search for references to storage size
rg --type yaml '(storage|size):\s*10Gi' --glob '!packages/apps/vm-disk/values2.yaml'

# Test: Search for other default storage sizes
rg --type yaml '(storage|size):\s*\d+[GM]i' --glob '!packages/apps/vm-disk/values2.yaml'

Length of output: 3671

Comment on lines 8 to 13
source:
#http: {}
#upload: {}
optical: false
storage: 50Gi
storageClass: replicated
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Consider clarifying parameter definitions and default values

The parameter definitions look good overall, but there are a few points to consider:

  1. The source parameter has commented-out options. Consider adding a comment explaining that users should uncomment and configure one of these options as needed.

  2. The default storage value of 50Gi might be too large for some use cases. Consider if a smaller default value would be more appropriate, or if it should be left undefined for users to specify based on their needs.

  3. The storageClass is set to "replicated". Ensure that this is a generally available storage class across different environments, or consider leaving it undefined by default.

Consider updating the source parameter like this:

source: {}
  # Uncomment and configure one of the following options:
  #http: {}
  #upload: {}

Also, consider adding a comment about the storageClass:

storageClass: replicated # Adjust this value based on your environment's available storage classes

Comment on lines 18 to 24
## @param systemDisk.origin The HTTP URL for source image
## @param systemDisk.storage The size of the disk allocated for the virtual machine
## @param systemDisk.storageClass StorageClass used to store the data
##
disks:
- name: "win10-iso"
- name: "win10-system"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Enhance disk configurations and fix indentation.

The addition of the disks section is good for flexibility. However, consider adding more details for each disk, such as size, type, and other relevant properties. This will provide better clarity and control over the VM's storage configuration.

Also, please fix the indentation of the disk entries. They should be aligned with the disks: key.

Here's a suggested improvement:

disks:
  - name: "win10-iso"
    size: 10Gi
    type: cdrom
  - name: "win10-system"
    size: 50Gi
    type: disk
    storageClass: standard
🧰 Tools
🪛 yamllint

[error] 21-21: trailing spaces

(trailing-spaces)


[warning] 23-23: wrong indentation: expected 0 but found 2

(indentation)

Comment on lines +94 to +98
networks:
- name: default
pod: {}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Consider enhancing network configuration flexibility.

While the current network configuration is functional, it might be too restrictive for various use cases.

Consider allowing for multiple network configurations and different network types. For example:

networks:
{{- range .Values.networks }}
- name: {{ .name }}
  {{ .type | default "pod" }}: {}
{{- end }}

This would allow users to specify multiple networks with different types (e.g., pod, multus, bridge) in the values file, providing more flexibility for different networking requirements.

Comment on lines 159 to 212
## Resources

The following instancetype resources are provided by Cozystack:

Name | vCPUs | Memory
-----|-------|-------
cx1.2xlarge | 8 | 16Gi
cx1.4xlarge | 16 | 32Gi
cx1.8xlarge | 32 | 64Gi
cx1.large | 2 | 4Gi
cx1.medium | 1 | 2Gi
cx1.xlarge | 4 | 8Gi
gn1.2xlarge | 8 | 32Gi
gn1.4xlarge | 16 | 64Gi
gn1.8xlarge | 32 | 128Gi
gn1.xlarge | 4 | 16Gi
m1.2xlarge | 8 | 64Gi
m1.4xlarge | 16 | 128Gi
m1.8xlarge | 32 | 256Gi
m1.large | 2 | 16Gi
m1.xlarge | 4 | 32Gi
n1.2xlarge | 16 | 32Gi
n1.4xlarge | 32 | 64Gi
n1.8xlarge | 64 | 128Gi
n1.large | 4 | 8Gi
n1.medium | 4 | 4Gi
n1.xlarge | 8 | 16Gi
o1.2xlarge | 8 | 32Gi
o1.4xlarge | 16 | 64Gi
o1.8xlarge | 32 | 128Gi
o1.large | 2 | 8Gi
o1.medium | 1 | 4Gi
o1.micro | 1 | 1Gi
o1.nano | 1 | 512Mi
o1.small | 1 | 2Gi
o1.xlarge | 4 | 16Gi
rt1.2xlarge | 8 | 32Gi
rt1.4xlarge | 16 | 64Gi
rt1.8xlarge | 32 | 128Gi
rt1.large | 2 | 8Gi
rt1.medium | 1 | 4Gi
rt1.micro | 1 | 1Gi
rt1.small | 1 | 2Gi
rt1.xlarge | 4 | 16Gi
u1.2xlarge | 8 | 32Gi
u1.2xmedium | 2 | 4Gi
u1.4xlarge | 16 | 64Gi
u1.8xlarge | 32 | 128Gi
u1.large | 2 | 8Gi
u1.medium | 1 | 4Gi
u1.micro | 1 | 1Gi
u1.nano | 1 | 512Mi
u1.small | 1 | 2Gi
u1.xlarge | 4 | 16Gi
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Improve table formatting and consider grouping instance types

The Resources section provides a comprehensive list of instancetype resources. To improve readability and organization, consider the following suggestions:

  1. Add leading and trailing pipes to each row of the table for better Markdown compatibility.
  2. Consider grouping the instance types by series (cx, gn, m1, n1, o1, rt1, u1) and adding subheaders for each group.
  3. Align the columns for better visual structure.

Here's an example of how you could start the improved table:

| Name         | vCPUs | Memory |
|--------------|-------|--------|
| **CX Series**|       |        |
| cx1.medium   | 1     | 2Gi    |
| cx1.large    | 2     | 4Gi    |
| cx1.xlarge   | 4     | 8Gi    |
| cx1.2xlarge  | 8     | 16Gi   |
| cx1.4xlarge  | 16    | 32Gi   |
| cx1.8xlarge  | 32    | 64Gi   |

Repeat this structure for each series of instance types.

🧰 Tools
🪛 Markdownlint

163-163: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


163-163: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


164-164: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


164-164: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


165-165: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


165-165: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


166-166: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


166-166: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


167-167: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


167-167: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


168-168: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


168-168: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


169-169: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


169-169: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


170-170: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


170-170: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


171-171: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


171-171: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)

Comment on lines 214 to 259
The following preference resources are provided by Cozystack:

Name | Guest OS
-----|---------
alpine | Alpine
centos.7 | CentOS 7
centos.7.desktop | CentOS 7
centos.stream10 | CentOS Stream 10
centos.stream10.desktop | CentOS Stream 10
centos.stream8 | CentOS Stream 8
centos.stream8.desktop | CentOS Stream 8
centos.stream8.dpdk | CentOS Stream 8
centos.stream9 | CentOS Stream 9
centos.stream9.desktop | CentOS Stream 9
centos.stream9.dpdk | CentOS Stream 9
cirros | Cirros
fedora | Fedora (amd64)
fedora.arm64 | Fedora (arm64)
opensuse.leap | OpenSUSE Leap
opensuse.tumbleweed | OpenSUSE Tumbleweed
rhel.10 | Red Hat Enterprise Linux 10 Beta (amd64)
rhel.10.arm64 | Red Hat Enterprise Linux 10 Beta (arm64)
rhel.7 | Red Hat Enterprise Linux 7
rhel.7.desktop | Red Hat Enterprise Linux 7
rhel.8 | Red Hat Enterprise Linux 8
rhel.8.desktop | Red Hat Enterprise Linux 8
rhel.8.dpdk | Red Hat Enterprise Linux 8
rhel.9 | Red Hat Enterprise Linux 9 (amd64)
rhel.9.arm64 | Red Hat Enterprise Linux 9 (arm64)
rhel.9.desktop | Red Hat Enterprise Linux 9 Desktop (amd64)
rhel.9.dpdk | Red Hat Enterprise Linux 9 DPDK (amd64)
rhel.9.realtime | Red Hat Enterprise Linux 9 Realtime (amd64)
sles | SUSE Linux Enterprise Server
ubuntu | Ubuntu
windows.10 | Microsoft Windows 10
windows.10.virtio | Microsoft Windows 10 (virtio)
windows.11 | Microsoft Windows 11
windows.11.virtio | Microsoft Windows 11 (virtio)
windows.2k16 | Microsoft Windows Server 2016
windows.2k16.virtio | Microsoft Windows Server 2016 (virtio)
windows.2k19 | Microsoft Windows Server 2019
windows.2k19.virtio | Microsoft Windows Server 2019 (virtio)
windows.2k22 | Microsoft Windows Server 2022
windows.2k22.virtio | Microsoft Windows Server 2022 (virtio)
windows.2k25 | Microsoft Windows Server 2025
windows.2k25.virtio | Microsoft Windows Server 2025 (virtio)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Improve table formatting and consider grouping operating systems

The Guest OS Preferences section provides a comprehensive list of supported operating systems. To enhance readability and organization, consider the following suggestions:

  1. Add leading and trailing pipes to each row of the table for better Markdown compatibility.
  2. Consider grouping the operating systems by type (e.g., Linux distributions, Windows versions) and adding subheaders for each group.
  3. Align the columns for better visual structure.

Here's an example of how you could start the improved table:

| Name                | Guest OS                                        |
|---------------------|--------------------------------------------------|
| **Linux Distributions** |                                                  |
| alpine              | Alpine                                           |
| centos.7            | CentOS 7                                         |
| centos.7.desktop    | CentOS 7 Desktop                                 |
| ...                 | ...                                              |
| **Windows**         |                                                  |
| windows.10          | Microsoft Windows 10                             |
| windows.10.virtio   | Microsoft Windows 10 (virtio)                    |
| ...                 | ...                                              |

This structure will make it easier for users to find the specific operating system they're looking for.

🧰 Tools
🪛 Markdownlint

216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


220-220: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


221-221: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


222-222: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


222-222: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


223-223: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


223-223: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


224-224: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


224-224: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)

Comment on lines 37 to 38
kubernetes 0.12.0 31a45c4d
kubernetes 0.13.0 HEAD
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Consider pinning 'kubernetes 0.13.0' to a specific commit hash

While kubernetes 0.12.0 is now pinned to commit 31a45c4d, kubernetes 0.13.0 remains at HEAD. Using HEAD can lead to unpredictable builds due to ongoing changes. Pinning to a specific commit hash ensures consistency and reproducibility.

Comment on lines +77 to +78
vm-disk 0.1.0 HEAD
vm-instance 0.1.0 HEAD
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Recommend specifying commit hashes for 'vm-disk' and 'vm-instance'

Currently, both vm-disk 0.1.0 and vm-instance 0.1.0 are using HEAD. To maintain build stability and prevent unintended changes from affecting the builds, it's advisable to pin these versions to specific commit hashes.

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
@kvaps kvaps force-pushed the instance-types branch 3 times, most recently from c4d4d81 to 07b391a Compare October 16, 2024 08:37
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Outside diff range and nitpick comments (36)
packages/apps/vm-disk/templates/dv.yaml (3)

3-7: LGTM: Metadata section is well-defined, with a suggestion for naming.

The metadata section is correctly structured with appropriate annotations. However, consider enhancing the naming convention to avoid potential conflicts.

Consider modifying the name to include a unique identifier or use a template that ensures uniqueness:

name: {{ printf "%s-%s" .Release.Name (randAlphaNum 5) | trunc 63 | trimSuffix "-" }}

This change would create a unique name for each DataVolume, reducing the risk of conflicts in multi-instance deployments.


8-24: LGTM: Well-structured source configuration with a suggestion for error handling.

The source configuration is well-implemented, allowing for flexibility in specifying different source types. The validation check for ensuring only one source type is a good practice.

Consider enhancing the error message in the validation check to provide more context:

{{- if gt (len .Values.source) 1 }}
  {{- fail (printf "Error: Multiple source types detected. Exactly one type of source (http, upload, or blank) is expected. Current source: %v" .Values.source) }}
{{- end }}

This change would provide more informative error messages, making it easier for users to identify and correct configuration issues.

🧰 Tools
🪛 yamllint

[error] 11-11: syntax error: could not find expected ':'

(syntax)


25-31: LGTM: Flexible storage configuration with a suggestion for value validation.

The storage configuration is well-structured and allows for flexibility in specifying storage requests and storage class.

Consider adding a validation check for the storage value to prevent potential errors:

{{- if not .Values.storage }}
  {{- fail "Error: .Values.storage must be specified. Please provide a valid storage request value." }}
{{- end }}
storage: {{ required "A valid .Values.storage entry is required!" .Values.storage }}

This change ensures that a storage value is always provided, preventing potential issues with undefined storage requests.

packages/apps/vm-disk/values.yaml (3)

3-20: LGTM with a suggestion: Consider adding validation for the source parameter

The source parameter section is well-documented with clear examples and helpful references to public image URLs. This is valuable for users setting up VM disks.

Consider adding validation logic or documentation to ensure that users provide either the upload or http sub-parameter, but not both. This could prevent potential misconfigurations.

Example validation logic (pseudo-code):

source:
  oneOf:
    - upload: {}
    - http:
        url: string

22-23: LGTM with a suggestion: Add more context for the optical parameter

The optical parameter is clearly defined with an appropriate default value.

Consider adding a brief explanation of when a user might want to set this parameter to true. This could help users understand the use cases for optical disks in virtual machines.

Example:

## @param optical Defines if the disk should be considered as optical (e.g., for CD-ROM or DVD-ROM emulation)
optical: false

25-28: LGTM with suggestions: Enhance guidance for storage parameters

The storage and storageClass parameters are well-defined with reasonable default values.

Consider the following enhancements:

  1. Add a note about the minimum recommended disk size for different OS types.
  2. Provide guidance on when to adjust the storageClass parameter.

Example:

## @param storage The size of the disk allocated for the virtual machine
## Note: Minimum recommended sizes vary by OS. E.g., 5Gi for lightweight distros, 10Gi+ for full desktop environments.
storage: 5Gi

## @param storageClass StorageClass used to store the data
## Note: Adjust this based on your cluster's available storage classes and performance requirements.
storageClass: replicated
packages/apps/vm-instance/values.yaml (2)

12-16: LGTM: Instance type and profile parameters added.

The addition of instanceType and instanceProfile parameters aligns well with the PR objectives. The default values seem appropriate.

There's a small typo in the comment for instanceProfile. Consider fixing it:

-## @param instanceProfile Virtual Machine prefferences profile
+## @param instanceProfile Virtual Machine preferences profile

18-23: Enhance disk configurations with more details.

The addition of the disks parameter is good for flexibility. However, consider expanding the example to provide more guidance on disk configuration.

Here's a suggested improvement for the comment:

## @param disks [array] List of disks to attach
## Example:
## disks:
##   - name: "system-disk"
##     size: 50Gi
##     type: disk
##     storageClass: standard
##   - name: "data-disk"
##     size: 100Gi
##     type: disk
##     storageClass: high-performance
##   - name: "iso-image"
##     size: 10Gi
##     type: cdrom
disks: []

This example provides more details about each disk, such as size, type, and storage class, which will offer better clarity and control over the VM's storage configuration.

packages/apps/vm-instance/templates/vm.yaml (5)

36-73: Comprehensive and flexible VM domain specification.

The VM domain specification is well-structured, allowing for flexible resource allocation and disk configuration. The conditional logic for CPU, memory, and disks is particularly noteworthy.

Consider setting a default machine type instead of an empty string, or add a comment explaining why it's intentionally left blank.

Would you like assistance in implementing a configurable machine type or enhancing the network interface configuration to support multiple interfaces?


74-82: Secure SSH key configuration using secrets.

The SSH key configuration is well-implemented, using secrets to store the keys and the noCloud propagation method. This approach aligns with security best practices.

Consider adding support for multiple SSH keys or key rotation to enhance flexibility and security.

Would you like assistance in implementing support for multiple SSH keys or key rotation?


83-95: Flexible and secure volume configuration.

The volume configuration is well-structured, supporting multiple data volumes and securely handling cloud-init data using secrets. The termination grace period is set to a reasonable value.

Consider implementing volume snapshot support or backup mechanisms to enhance data management capabilities.

Would you like assistance in implementing volume snapshot support or backup mechanisms?


96-98: Basic network configuration implemented.

The current network configuration, using a single pod network interface, is functional for basic use cases. However, as mentioned in a previous review, consider enhancing the network configuration flexibility to support various use cases.

To reiterate the previous suggestion, consider allowing for multiple network configurations and different network types. For example:

networks:
{{- range .Values.networks }}
- name: {{ .name }}
  {{ .type | default "pod" }}: {}
{{- end }}

This would allow users to specify multiple networks with different types (e.g., pod, multus, bridge) in the values file, providing more flexibility for different networking requirements.

Would you like assistance in implementing this enhanced network configuration?


1-1: Consider adding a YAML directive to suppress false positive linting errors.

The static analysis tool (yamllint) reported a syntax error on this line, which is likely a false positive due to the Go templating syntax. To suppress this error and improve the file's compatibility with YAML linters, consider adding a YAML directive at the beginning of the file:

# yamllint disable
{{- /* Your existing code */ -}}

This directive will instruct yamllint to ignore the file, preventing false positives without affecting the template's functionality.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

packages/apps/vm-instance/values.schema.json (4)

18-79: LGTM with a minor suggestion for 'instanceType'.

The 'running' property is well-defined. The 'instanceType' property correctly includes all the instance types mentioned in the PR objectives. However, there's an empty string at the end of the enum list which might not be intended.

Consider removing the empty string from the 'instanceType' enum:

  "instanceType": {
    ...
    "enum": [
      ...
      "u1.xlarge",
-     ""
    ]
  }

80-130: Minor improvements needed for 'instanceProfile'.

The 'instanceProfile' property correctly includes all the profiles mentioned in the PR objectives. However, there are two minor issues:

  1. There's an empty string at the end of the enum list which might not be intended.
  2. There's a typo in the description: "prefferences" should be "preferences".

Consider applying these changes:

  "instanceProfile": {
    "type": "string",
-   "description": "Virtual Machine prefferences profile",
+   "description": "Virtual Machine preferences profile",
    ...
    "enum": [
      ...
      "windows.2k25.virtio",
-     ""
    ]
  }

131-153: LGTM for 'resources', suggestion for 'disks'.

The 'resources' property is well-defined with appropriate CPU and memory configurations.

For the 'disks' property, consider providing more specific item properties to guide users on what information is expected for each disk.

Consider expanding the 'disks' property definition:

  "disks": {
    "type": "array",
    "description": "List of disks to attach",
    "default": [],
    "items": {
-     "type": "object"
+     "type": "object",
+     "properties": {
+       "name": {
+         "type": "string",
+         "description": "Name of the disk"
+       },
+       "size": {
+         "type": "string",
+         "description": "Size of the disk (e.g., '10Gi')"
+       }
+     },
+     "required": ["name", "size"]
    }
  }

This change would provide more guidance to users on what information is expected for each disk.


162-166: Suggestion for 'cloudInit' default value.

The 'cloudInit' property is well-defined. However, the default value could be more informative to guide users.

Consider updating the default value to include a comment explaining its purpose:

  "cloudInit": {
    "type": "string",
    "description": "cloud-init user data config. See cloud-init documentation for more details.",
-   "default": "#cloud-config\n"
+   "default": "#cloud-config\n# Add your cloud-init configuration here\n"
  }

This change would provide a clearer starting point for users who are unfamiliar with cloud-init.

packages/core/platform/bundles/paas-full.yaml (1)

82-86: LGTM! Minor formatting suggestion.

The new release entry for kubevirt-instancetypes is well-structured and logically placed within the file. The dependencies listed in the dependsOn field are appropriate for this component.

Consider adding spaces after the commas in the dependsOn list for better readability:

dependsOn: [cilium, kubeovn, kubevirt-operator, kubevirt]
🧰 Tools
🪛 yamllint

[warning] 86-86: too few spaces after comma

(commas)


[warning] 86-86: too few spaces after comma

(commas)


[warning] 86-86: too few spaces after comma

(commas)

packages/apps/vm-instance/README.md (6)

12-33: Add language specifiers to code blocks

The instructions for accessing the virtual machine are clear and helpful. To improve the formatting and enable syntax highlighting, consider adding language specifiers to the code blocks. For example:

-```
+```bash
 virtctl console <vm>

- +bash
virtctl vnc


-```
+```bash
virtctl ssh <user>@<vm>

This change will enhance readability and provide proper syntax highlighting in rendered Markdown.

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 Markdownlint</summary><blockquote>

19-19: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

25-25: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

31-31: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</blockquote></details>

</details>

---

`35-51`: **Fix table formatting for proper rendering**

The common parameters table provides valuable information, but its formatting needs adjustment to ensure proper rendering. Please apply the following changes:

1. Add leading and trailing pipes to each row.
2. Ensure consistent column count across all rows.

Here's the corrected table format:

```markdown
| Name               | Description                                                                        | Value               |
|--------------------|-------------------------------------------------------------------------------------|---------------------|
| `external`         | Enable external access from outside the cluster                                    | `false`             |
| `externalPorts`    | Specify ports to forward from outside the cluster                                  | `[]`                |
| `running`          | Determines if the virtual machine should be running                                | `true`              |
| `instanceType`     | Virtual Machine instance type                                                      | `u1.medium`         |
| `instanceProfile`  | Virtual Machine prefferences profile                                               | `windows.10.virtio` |
| `disks`            | List of disks to attach                                                            | `[]`                |
| `resources.cpu`    | The number of CPU cores allocated to the virtual machine                           | `""`                |
| `resources.memory` | The amount of memory allocated to the virtual machine                              | `""`                |
| `sshKeys`          | List of SSH public keys for authentication. Can be a single key or a list of keys. | `[]`                |
| `cloudInit`        | cloud-init user data config. See cloud-init documentation for more details.        | `#cloud-config`     |

This correction will ensure the table is properly rendered in Markdown viewers.

🧰 Tools
🪛 LanguageTool

[style] ~49-~49: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. | `[...

(MISSING_IT_THERE)

🪛 Markdownlint

50-50: Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


51-51: Expected: leading_and_trailing; Actual: trailing_only; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


51-51: Expected: 3; Actual: 1; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)


53-159: LGTM: Comprehensive VM series descriptions

The VM series descriptions provide detailed information about each series (U, O, CX, M, RT), including their characteristics and intended use cases. This information is valuable for users to choose the appropriate VM type for their needs.

Minor suggestion: Consider adding a brief summary table at the beginning or end of this section to provide a quick overview of all series. This could help users quickly compare the different series before diving into the detailed descriptions.

🧰 Tools
🪛 LanguageTool

[typographical] ~68-~68: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~84-~84: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~86-~86: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~99-~99: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~108-~108: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~111-~111: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~114-~114: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~116-~116: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~130-~130: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~133-~133: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~150-~150: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~153-~153: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~156-~156: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


161-219: Fix table formatting for instance type resources

The instance type resources table provides valuable information, but its formatting needs adjustment to ensure proper rendering. Please apply the following changes:

  1. Add leading and trailing pipes to each row.
  2. Add a header row separator.

Here's an example of how the corrected table should look:

| Name | vCPUs | Memory |
|------|-------|--------|
| cx1.2xlarge  | 8  | 16Gi |
| cx1.4xlarge  | 16 | 32Gi |
| cx1.8xlarge  | 32 | 64Gi |
| cx1.large    | 2  | 4Gi  |
...

Apply this format to the entire table. This correction will ensure the table is properly rendered in Markdown viewers and improve readability.

🧰 Tools
🪛 Markdownlint

170-170: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


170-170: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


171-171: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


171-171: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


221-266: Fix table formatting for preference resources

The preference resources table provides important information about guest OS options, but its formatting needs adjustment to ensure proper rendering. Please apply the following changes:

  1. Add leading and trailing pipes to each row.
  2. Add a header row separator.

Here's an example of how the corrected table should look:

| Name | Guest OS |
|------|----------|
| alpine | Alpine |
| centos.7 | CentOS 7 |
| centos.7.desktop | CentOS 7 |
...

Apply this format to the entire table. This correction will ensure the table is properly rendered in Markdown viewers and improve readability.

🧰 Tools
🪛 Markdownlint

223-223: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


223-223: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


224-224: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


224-224: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


1-266: Excellent README with minor formatting improvements needed

This README file provides comprehensive and well-structured information about the Virtual Machine component within the KubeVirt ecosystem. It covers all essential aspects, including VM definitions, deployment details, access methods, common parameters, VM series descriptions, and instance type resources.

The content is informative and will be very helpful for users working with VMs in this environment. To further improve the document:

  1. Address the table formatting issues mentioned in previous comments.
  2. Consider adding a brief summary table for the VM series as suggested earlier.
  3. Perform a final proofreading pass to catch any minor typos or inconsistencies.

Overall, this is an excellent addition to the project documentation. Great job!

🧰 Tools
🪛 LanguageTool

[style] ~49-~49: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. | `[...

(MISSING_IT_THERE)


[typographical] ~68-~68: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~84-~84: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~86-~86: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~99-~99: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~108-~108: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~111-~111: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~114-~114: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~116-~116: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~130-~130: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~133-~133: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~150-~150: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~153-~153: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~156-~156: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)

🪛 Markdownlint

19-19: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


25-25: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


31-31: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


50-50: Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


51-51: Expected: leading_and_trailing; Actual: trailing_only; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


170-170: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


170-170: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


171-171: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


171-171: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


223-223: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


223-223: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


224-224: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


224-224: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


51-51: Expected: 3; Actual: 1; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)

packages/system/kubevirt-instancetypes/templates/preferences.yaml (10)

54-82: Approved, but consider increasing resources for desktop use

The VirtualMachineClusterPreference for CentOS 7 Desktop is well-configured with appropriate device settings for a graphical environment. The deprecated status is correctly applied. However, the resource allocation (1 CPU, 1Gi memory) might be low for a smooth desktop experience.

Consider increasing the resource allocation for the desktop version. Here's a suggested change:

  requirements:
    cpu:
-     guest: 1
+     guest: 2
    memory:
-     guest: 1Gi
+     guest: 2Gi

112-141: Approved, but consider increasing resources for desktop use

The VirtualMachineClusterPreference for CentOS Stream 10 Desktop is well-configured with appropriate device settings for a graphical environment, including modern features like dedicated I/O threads and RNG. However, the resource allocation (1 CPU, 1.5Gi memory) might be low for a smooth desktop experience, especially for CentOS Stream 10.

Consider increasing the resource allocation for the desktop version. Here's a suggested change:

  requirements:
    cpu:
-     guest: 1
+     guest: 2
    memory:
-     guest: 1.5Gi
+     guest: 4Gi

143-168: Approved, but note deprecated status and consider feature parity

The VirtualMachineClusterPreference for CentOS Stream 8 is correctly configured for basic use. The deprecated status is appropriately applied, which is important for users to note. However, this configuration lacks some modern features present in the CentOS Stream 10 configuration, such as dedicated I/O threads and RNG.

Consider adding the modern features to maintain consistency across CentOS Stream versions:

  devices:
    preferredDiskBus: virtio
    preferredInterfaceModel: virtio
+   preferredDiskDedicatedIoThread: true
+   preferredRng: {}

170-198: Approved, but consider feature parity and resource increase

The VirtualMachineClusterPreference for CentOS Stream 8 Desktop is appropriately configured for basic desktop use and correctly marked as deprecated. However, it lacks some modern features present in the CentOS Stream 10 Desktop configuration, and the resource allocation might be low for a smooth desktop experience.

Consider the following changes for consistency and improved performance:

  1. Add modern features:
  devices:
    preferredAutoattachInputDevice: true
    preferredDiskBus: virtio
+   preferredDiskDedicatedIoThread: true
    preferredInputBus: virtio
    preferredInputType: tablet
    preferredInterfaceModel: virtio
+   preferredRng: {}
  1. Increase resource allocation:
  requirements:
    cpu:
-     guest: 1
+     guest: 2
    memory:
-     guest: 1.5Gi
+     guest: 4Gi

200-231: Approved, but consider feature parity and note deprecated status

The VirtualMachineClusterPreference for CentOS Stream 8 DPDK is well-configured for DPDK workloads, with appropriate CPU topology and network interface settings. The increased CPU count is suitable for DPDK performance. However, it's marked as deprecated and lacks some modern features present in CentOS Stream 10 configurations.

Consider the following additions for feature parity with CentOS Stream 10:

  devices:
    preferredDiskBus: virtio
    preferredInterfaceModel: virtio
    preferredNetworkInterfaceMultiQueue: true
+   preferredDiskDedicatedIoThread: true
+   preferredRng: {}

Also, ensure that users are aware of the deprecated status of this configuration, as it may impact long-term support and compatibility.


261-290: Approved, but consider increasing resources for desktop use

The VirtualMachineClusterPreference for CentOS Stream 9 Desktop is well-configured with appropriate device settings for a graphical environment. It correctly includes modern features like dedicated I/O threads and RNG, which is consistent with the server version. However, the resource allocation (1 CPU, 1.5Gi memory) might be low for a smooth desktop experience, especially for CentOS Stream 9.

Consider increasing the resource allocation for the desktop version. Here's a suggested change:

  requirements:
    cpu:
-     guest: 1
+     guest: 2
    memory:
-     guest: 1.5Gi
+     guest: 4Gi

415-440: Approved, but consider adding performance-enhancing features

The VirtualMachineClusterPreference for OpenSUSE Leap is well-configured with appropriate resource allocation (1 CPU, 2Gi memory) for this distribution. The inclusion of RNG is good for security-sensitive applications. However, it lacks some modern features that could enhance performance.

Consider adding the following features to improve performance:

  devices:
    preferredDiskBus: virtio
    preferredInterfaceModel: virtio
    preferredRng: {}
+   preferredDiskDedicatedIoThread: true
+   preferredNetworkInterfaceMultiQueue: true

These additions would bring the OpenSUSE Leap configuration more in line with other modern distributions and potentially improve I/O and network performance.


442-467: Approved, but consider Tumbleweed's rolling release nature

The VirtualMachineClusterPreference for OpenSUSE Tumbleweed is consistent with the OpenSUSE Leap configuration, which is good for maintainability. However, given Tumbleweed's nature as a rolling release distribution with newer software, consider the following:

  1. Add more modern features to leverage Tumbleweed's newer components:
  devices:
    preferredDiskBus: virtio
    preferredInterfaceModel: virtio
    preferredRng: {}
+   preferredDiskDedicatedIoThread: true
+   preferredNetworkInterfaceMultiQueue: true
  1. Consider increasing the resource allocation to accommodate Tumbleweed's potentially higher requirements:
  requirements:
    cpu:
-     guest: 1
+     guest: 2
    memory:
-     guest: 2Gi
+     guest: 4Gi

These changes would better align the Tumbleweed configuration with its rolling release nature and potentially newer software stack.


532-556: Approved, but consider adding deprecated label and noting limited features

The VirtualMachineClusterPreference for Red Hat Enterprise Linux 7 is appropriately basic, reflecting the older nature of RHEL 7. The resource allocation (1 CPU, 1Gi memory) is suitable for this version. However, there are two important considerations:

  1. RHEL 7 is approaching its end of life, but there's no deprecated label.
  2. The configuration lacks many modern features present in newer RHEL versions.

Consider adding a deprecated label to warn users:

  labels:
    instancetype.kubevirt.io/os-type: linux
    instancetype.kubevirt.io/vendor: kubevirt.io
+   instancetype.kubevirt.io/deprecated: "true"

Also, it might be helpful to add a comment or annotation explaining the limited features due to RHEL 7's age and approaching end of life.


558-585: Approved, but consider deprecation, resource increase, and feature limitations

The VirtualMachineClusterPreference for Red Hat Enterprise Linux 7 Desktop is appropriately configured for basic desktop use with the addition of input devices. However, there are several important considerations:

  1. RHEL 7 is approaching its end of life, but there's no deprecated label.
  2. The configuration lacks many modern features present in newer RHEL versions.
  3. The resource allocation might be low for a smooth desktop experience.

Consider the following changes:

  1. Add a deprecated label:
  labels:
    instancetype.kubevirt.io/os-type: linux
    instancetype.kubevirt.io/vendor: kubevirt.io
+   instancetype.kubevirt.io/deprecated: "true"
  1. Increase resource allocation for desktop use:
  requirements:
    cpu:
-     guest: 1
+     guest: 2
    memory:
-     guest:

</blockquote></details>
<details>
<summary>packages/system/kubevirt-instancetypes/templates/instancetypes.yaml (2)</summary><blockquote>

`403-541`: **Well-designed M Series for memory-intensive applications**

The M Series instance types are well-configured for memory-intensive workloads:

1. Consistent use of hugepages (2Mi) across all instance types, which is excellent for performance in memory-intensive scenarios.
2. Logical scaling of CPU and memory resources across instance types (large to 8xlarge).
3. Clear annotations and labels for easy identification and management.



Consider adding a configuration option for larger hugepage sizes (e.g., 1Gi) for extremely memory-intensive applications. This could be implemented as follows:

```yaml
  memory:
    guest: 64Gi
    hugepages:
      pageSize: 1Gi  # Optional: Allow 1Gi hugepages for extreme memory-intensive cases

This addition would provide even more flexibility for users with varying memory-intensive workloads.


1017-1359: Excellent RT Series configuration for realtime applications

The RT Series instance types are exceptionally well-designed for realtime applications:

  1. Consistent use of dedicated CPU placement, isolated emulator threads, and 1Gi hugepages across all instance types.
  2. Implementation of NUMA topology, which is crucial for predictable performance in realtime scenarios.
  3. Smart use of annotations to disable CPU load balancing, CPU quota, and IRQ load balancing, further optimizing for realtime performance.
  4. Logical scaling of CPU and memory resources across instance types (micro to 8xlarge).
  5. Clear requirement for nodes capable of running realtime workloads, ensuring proper placement.

This configuration should provide excellent performance and predictability for realtime applications.

Consider adding support for CPU pinning to further enhance realtime performance. This could be implemented as follows:

spec:
  cpu:
    dedicatedCPUPlacement: true
    guest: 8
    isolateEmulatorThread: true
    numa:
      guestMappingPassthrough: {}
    realtime: {}
    cpuPinning:
      strategy: "static"  # or "dynamic" based on your needs

This addition would allow for even more precise control over CPU resource allocation, which can be beneficial in certain realtime scenarios.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between cf4c08c and 6d864ed.

📒 Files selected for processing (18)
  • packages/apps/versions_map (2 hunks)
  • packages/apps/vm-disk/Makefile (1 hunks)
  • packages/apps/vm-disk/README.md (1 hunks)
  • packages/apps/vm-disk/templates/dv.yaml (1 hunks)
  • packages/apps/vm-disk/values.schema.json (1 hunks)
  • packages/apps/vm-disk/values.yaml (1 hunks)
  • packages/apps/vm-instance/Chart.yaml (2 hunks)
  • packages/apps/vm-instance/Makefile (1 hunks)
  • packages/apps/vm-instance/README.md (1 hunks)
  • packages/apps/vm-instance/templates/vm.yaml (1 hunks)
  • packages/apps/vm-instance/values.schema.json (1 hunks)
  • packages/apps/vm-instance/values.yaml (1 hunks)
  • packages/core/platform/bundles/paas-full.yaml (1 hunks)
  • packages/system/kubevirt-instancetypes/Chart.yaml (1 hunks)
  • packages/system/kubevirt-instancetypes/Makefile (1 hunks)
  • packages/system/kubevirt-instancetypes/templates/instancetypes.yaml (1 hunks)
  • packages/system/kubevirt-instancetypes/templates/preferences.yaml (1 hunks)
  • packages/system/kubevirt-instancetypes/values.yaml (1 hunks)
✅ Files skipped from review due to trivial changes (2)
  • packages/system/kubevirt-instancetypes/Chart.yaml
  • packages/system/kubevirt-instancetypes/values.yaml
🚧 Files skipped from review as they are similar to previous changes (6)
  • packages/apps/versions_map
  • packages/apps/vm-disk/Makefile
  • packages/apps/vm-disk/README.md
  • packages/apps/vm-disk/values.schema.json
  • packages/apps/vm-instance/Chart.yaml
  • packages/apps/vm-instance/Makefile
🧰 Additional context used
🪛 yamllint
packages/apps/vm-disk/templates/dv.yaml

[error] 11-11: syntax error: could not find expected ':'

(syntax)

packages/apps/vm-instance/templates/vm.yaml

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

packages/core/platform/bundles/paas-full.yaml

[warning] 86-86: too few spaces after comma

(commas)


[warning] 86-86: too few spaces after comma

(commas)


[warning] 86-86: too few spaces after comma

(commas)

🪛 LanguageTool
packages/apps/vm-instance/README.md

[style] ~49-~49: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ... of SSH public keys for authentication. Can be a single key or a list of keys. | `[...

(MISSING_IT_THERE)


[typographical] ~68-~68: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[typographical] ~84-~84: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~86-~86: Consider a shorter alternative to avoid wordiness.
Context: ...tted Memory* - Memory is over-committed in order to achieve a higher workload density. - ...

(IN_ORDER_TO_PREMIUM)


[style] ~99-~99: Consider a shorter alternative to avoid wordiness.
Context: ...given to the compute threads of the VM. In order to ensure this, some additional cores (dep...

(IN_ORDER_TO_PREMIUM)


[style] ~108-~108: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~111-~111: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~114-~114: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)


[style] ~116-~116: Consider a shorter alternative to avoid wordiness.
Context: ...NUMA topology is reflected in the guest in order to optimize guest sided cache utilizatio...

(IN_ORDER_TO_PREMIUM)


[style] ~130-~130: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Bursta...

(IN_ORDER_TO_PREMIUM)


[typographical] ~133-~133: Usually, there’s no comma before “if”.
Context: ... permitted to burst beyond this baseline, if excess compute resources are availabl...

(IF_NO_COMMA)


[style] ~150-~150: Consider a shorter alternative to avoid wordiness.
Context: ...are: - Hugepages - Hugepages are used in order to improve memory performance. - *Dedica...

(IN_ORDER_TO_PREMIUM)


[style] ~153-~153: Consider a shorter alternative to avoid wordiness.
Context: ...re exclusively assigned to every vCPU in order to provide fixed and high compute guarante...

(IN_ORDER_TO_PREMIUM)


[style] ~156-~156: Consider a shorter alternative to avoid wordiness.
Context: ...r threads are isolated from the vCPUs in order to reduce emaulation related impact on the...

(IN_ORDER_TO_PREMIUM)

🪛 Markdownlint
packages/apps/vm-instance/README.md

19-19: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


25-25: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


31-31: null
Fenced code blocks should have a language specified

(MD040, fenced-code-language)


50-50: Expected: leading_and_trailing; Actual: leading_only; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


51-51: Expected: leading_and_trailing; Actual: trailing_only; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


170-170: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


170-170: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


171-171: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


171-171: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


172-172: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


173-173: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


174-174: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


175-175: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


176-176: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


177-177: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


178-178: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


179-179: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


180-180: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


181-181: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


182-182: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


183-183: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


184-184: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


185-185: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


186-186: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


187-187: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


188-188: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


189-189: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


190-190: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


191-191: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


192-192: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


193-193: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


194-194: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


195-195: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


196-196: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


197-197: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


198-198: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


199-199: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


200-200: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


201-201: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


202-202: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


203-203: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


204-204: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


205-205: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


206-206: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


207-207: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


208-208: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


209-209: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


210-210: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


211-211: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


212-212: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


213-213: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


214-214: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


215-215: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


216-216: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


217-217: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


218-218: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


219-219: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


223-223: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


223-223: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


224-224: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


224-224: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


225-225: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


226-226: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


227-227: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


228-228: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


229-229: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


230-230: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


231-231: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


232-232: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


233-233: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


234-234: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


235-235: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


236-236: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


237-237: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


238-238: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


239-239: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


240-240: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


241-241: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


242-242: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


243-243: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


244-244: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


245-245: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


246-246: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


247-247: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


248-248: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


249-249: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


250-250: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


251-251: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


252-252: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


253-253: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


254-254: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


255-255: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


256-256: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


257-257: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


258-258: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


259-259: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


260-260: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


261-261: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


262-262: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


263-263: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


264-264: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


265-265: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing leading pipe
Table pipe style

(MD055, table-pipe-style)


266-266: Expected: leading_and_trailing; Actual: no_leading_or_trailing; Missing trailing pipe
Table pipe style

(MD055, table-pipe-style)


51-51: Expected: 3; Actual: 1; Too few cells, row will be missing data
Table column count

(MD056, table-column-count)

🔇 Additional comments (33)
packages/system/kubevirt-instancetypes/Makefile (4)

1-2: LGTM: Environment variables are well-defined.

The NAME and NAMESPACE variables are appropriately set and exported. These align well with the PR objectives of introducing instance types for KubeVirt.


1-13: Overall, the Makefile is well-structured and aligns with PR objectives.

This Makefile effectively sets up the environment and provides an update target for generating and customizing KubeVirt instance types and preferences. It aligns well with the PR objectives of introducing instance types and profiles.

The suggested improvements focus on enhancing error handling, readability, and maintainability. Implementing these changes will make the Makefile more robust and easier to maintain in the future.

Great job on introducing this functionality! The automated generation and customization of YAML configurations will significantly streamline the management of KubeVirt instance types.


6-13: Approve update target with suggestions for improvement.

The update target effectively generates and customizes instance type and preference templates, aligning well with the PR objectives. However, consider the following suggestions:

  1. Add error checking to ensure each command succeeds before proceeding to the next.
  2. Consider using variables for repeated values like "templates" directory and GitHub URLs.
  3. Add comments explaining the purpose of each command, especially the yq and sed operations.

Here's a suggested refactoring with error checking and variables:

TEMPLATES_DIR := templates
PREFERENCES_URL := https://github.com/kubevirt/common-instancetypes/preferences
INSTANCETYPES_URL := https://github.com/kubevirt/common-instancetypes/instancetypes

update:
	rm -rf $(TEMPLATES_DIR)
	mkdir $(TEMPLATES_DIR) || exit 1
	
	# Generate and filter preferences
	kustomize build $(PREFERENCES_URL) > $(TEMPLATES_DIR)/preferences.yaml || exit 1
	yq -i 'select(.kind != "VirtualMachinePreference")' $(TEMPLATES_DIR)/preferences.yaml || exit 1
	
	# Generate and filter instancetypes
	kustomize build $(INSTANCETYPES_URL) > $(TEMPLATES_DIR)/instancetypes.yaml || exit 1
	yq -i 'select(.kind != "VirtualMachineInstancetype")' $(TEMPLATES_DIR)/instancetypes.yaml || exit 1
	
	# Remove persistent flag from preferences
	sed -i '/persistent: true/d' $(TEMPLATES_DIR)/preferences.yaml || exit 1

To ensure the kustomize commands are fetching the correct data, run:

#!/bin/bash
# Description: Verify kustomize commands fetch correct data

# Test: Check kustomize output for preferences
echo "Preferences kustomize output:"
kustomize build https://github.com/kubevirt/common-instancetypes/preferences | head -n 10

echo "\nInstancetypes kustomize output:"
kustomize build https://github.com/kubevirt/common-instancetypes/instancetypes | head -n 10

4-4: Verify the included Makefile.

The inclusion of ../../../scripts/package.mk is a good practice for sharing common rules. However, please ensure that this file exists and contains the expected shared Makefile rules.

Run the following script to verify the existence and contents of the included file:

packages/apps/vm-disk/templates/dv.yaml (2)

1-2: LGTM: Correct API version and resource kind.

The API version and resource kind are correctly specified for a CDI DataVolume resource.


11-11: Note: False positive in static analysis.

The yamllint tool reported a syntax error on this line, but it's a false positive. The syntax is correct for a Helm template. No changes are needed.

🧰 Tools
🪛 yamllint

[error] 11-11: syntax error: could not find expected ':'

(syntax)

packages/apps/vm-disk/values.yaml (1)

1-2: LGTM: Clear section header

The "Common parameters" section header is well-defined and follows good documentation practices.

packages/apps/vm-instance/values.yaml (3)

9-10: LGTM: Explicit VM running state.

The explicit setting of running: true provides a clear default state for the virtual machine instance.


25-29: Clarify the usage of empty resource values.

The cpu and memory resources have been set to empty strings. This change might lead to confusion for users expecting default values.

Could you please clarify:

  1. Is this intentional?
  2. How will these values be determined if left empty?
  3. Are there any default values applied elsewhere?

Consider updating the comments to reflect the new behavior. For example:

## @param resources.cpu The number of CPU cores allocated to the virtual machine. Leave empty to use instance type default.
## @param resources.memory The amount of memory allocated to the virtual machine. Leave empty to use instance type default.
resources:
  cpu: ""
  memory: ""

This assumes that the values will be determined by the instance type if left empty. Please adjust the comment as necessary to reflect the actual behavior.


Line range hint 1-29: Overall, the changes align well with the PR objectives.

The introduction of instanceType and instanceProfile parameters, along with the flexible disks configuration, supports the goal of introducing default instance types and profiles. These changes enhance the functionality and flexibility of the VM instance configuration.

A few areas for consideration:

  1. Expanding the disk configuration example for better guidance.
  2. Clarifying the intent behind empty resource values.
  3. Fixing a minor typo in the instanceProfile comment.

These minor improvements will further enhance the usability and clarity of the configuration file.

packages/apps/vm-instance/templates/vm.yaml (3)

1-7: Excellent pre-validation of instance types and profiles!

This section effectively validates the existence of specified instance types and profiles in the cluster before attempting to use them. This proactive approach prevents potential runtime errors and provides clear feedback to users.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)


8-27: Well-structured VM definition with flexible configuration options.

The VM metadata and spec are well-defined, allowing for flexible configurations with conditional instance types and profiles. This approach promotes reusability and consistency across different VM instances.

Could you please clarify the purpose of setting revisionName: null for both instancetype and preference? Is this intentional, or should it be omitted if not used?


29-35: Consistent metadata application with noteworthy annotation.

The VM template metadata is well-structured, consistently applying labels using templates. The inclusion of the kubevirt.io/allow-pod-bridge-network-live-migration annotation is notable.

Please verify if enabling pod bridge network live migration is intentional and aligns with your infrastructure capabilities and security policies.

packages/apps/vm-instance/values.schema.json (4)

1-4: LGTM: Schema structure is well-defined.

The schema is correctly structured as an object with an appropriate title "Chart Values".


5-17: LGTM: External access properties are well-defined.

The 'external' and 'externalPorts' properties are correctly defined with appropriate types, descriptions, and defaults. This allows for flexible configuration of external access to the virtual machine.


154-161: LGTM: SSH keys property is well-defined.

The 'sshKeys' property is correctly defined as an array of strings with an appropriate description and default value.


1-168: Overall, the schema is well-structured and comprehensive.

This new schema file aligns well with the PR objectives, providing a detailed configuration structure for virtual machine instances. It covers all the instance types and profiles mentioned in the PR summary, and includes essential properties for VM configuration such as external access, resource allocation, SSH keys, and cloud-init data.

The suggestions provided in the review comments are minor and aimed at improving clarity and usability. Once these small adjustments are made, the schema will be in excellent shape to support the introduction of default instance types and profiles as intended by this PR.

packages/core/platform/bundles/paas-full.yaml (1)

Line range hint 77-80: Indentation correction approved.

The indentation correction for the privileged: true line in the kubevirt release entry improves the overall structure and readability of the file. This change ensures consistency with other release entries.

🧰 Tools
🪛 yamllint

[warning] 80-80: too few spaces after comma

(commas)


[warning] 80-80: too few spaces after comma

(commas)


[warning] 86-86: too few spaces after comma

(commas)


[warning] 86-86: too few spaces after comma

(commas)


[warning] 86-86: too few spaces after comma

(commas)

packages/apps/vm-instance/README.md (1)

1-10: LGTM: Clear and informative introduction

The introduction and deployment details provide a concise overview of Virtual Machines and their integration with KubeVirt. The inclusion of links to the KubeVirt User Guide and GitHub repository is helpful for users seeking more information.

packages/system/kubevirt-instancetypes/templates/preferences.yaml (10)

1-25: LGTM: Well-configured Alpine Linux preference

The VirtualMachineClusterPreference for Alpine Linux is well-defined and appropriate for its use case. It correctly uses virtio for disk and network interfaces, which is good for performance. The minimal resource requirements (1 CPU, 512Mi memory) align well with Alpine's lightweight nature.


84-110: LGTM: Well-configured CentOS Stream 10 preference with modern features

The VirtualMachineClusterPreference for CentOS Stream 10 is excellently configured. It includes modern virtualization features such as dedicated I/O threads and a random number generator (RNG), which are great for performance and security respectively. The resource allocation (1 CPU, 1.5Gi memory) is appropriate for a base CentOS Stream 10 system.


233-259: LGTM: Well-configured CentOS Stream 9 preference with modern features

The VirtualMachineClusterPreference for CentOS Stream 9 is excellently configured. It includes modern virtualization features such as dedicated I/O threads and a random number generator (RNG), which are great for performance and security respectively. The resource allocation (1 CPU, 1.5Gi memory) is appropriate for a base CentOS Stream 9 system.


292-324: LGTM: Well-configured CentOS Stream 9 DPDK preference

The VirtualMachineClusterPreference for CentOS Stream 9 DPDK is excellently configured for DPDK workloads. It includes:

  1. Appropriate CPU topology spread for DPDK performance.
  2. Increased CPU count (2 CPUs) suitable for DPDK workloads.
  3. Modern features like dedicated I/O threads and RNG, consistent with other CentOS Stream 9 configs.
  4. Specialized network interface configurations (preferredNetworkInterfaceMultiQueue).

This configuration provides a solid foundation for running DPDK applications on CentOS Stream 9.


326-350: LGTM: Appropriately minimal Cirros preference

The VirtualMachineClusterPreference for Cirros is well-configured for its intended use case. The minimal resource requirements (1 CPU, 256Mi memory) align perfectly with Cirros's nature as a lightweight cloud image. The configuration correctly uses virtio for disk and network interfaces for optimal performance, while appropriately omitting more advanced features that aren't necessary for Cirros's typical use cases.


352-384: LGTM: Well-configured Fedora (amd64) preference with modern and security features

The VirtualMachineClusterPreference for Fedora (amd64) is excellently configured with a focus on modern features and security:

  1. Includes RNG for improved randomness, crucial for security-sensitive applications.
  2. Utilizes network interface multi-queue for enhanced network performance.
  3. Specifies EFI firmware with secure boot enabled, significantly improving system security.
  4. Includes SMM (System Management Mode), which can be important for certain virtualization scenarios.

The resource allocation (1 CPU, 2Gi memory) is appropriate for a base Fedora system. This configuration provides a solid foundation for running Fedora with good performance and security features.


469-501: LGTM: Well-configured RHEL 10 Beta (amd64) preference with modern and security features

The VirtualMachineClusterPreference for Red Hat Enterprise Linux 10 Beta (amd64) is excellently configured with a focus on modern features and security:

  1. Includes dedicated I/O thread for improved disk performance.
  2. Utilizes RNG for enhanced randomness, crucial for security-sensitive applications.
  3. Specifies EFI firmware with secure boot enabled, significantly improving system security.
  4. Includes SMM (System Management Mode), which can be important for certain virtualization scenarios.

The resource allocation (1 CPU, 1.5Gi memory) is appropriate for a base RHEL system. This configuration provides a solid foundation for running RHEL 10 Beta with good performance and security features, suitable for enterprise environments.


503-530: Approved, but clarify EFI and SMM support for RHEL 10 Beta on arm64

The VirtualMachineClusterPreference for Red Hat Enterprise Linux 10 Beta (arm64) is well-configured and consistent with the amd64 version in terms of resource allocation and modern features like dedicated I/O thread and RNG. However, there are some notable differences:

  1. EFI firmware with secure boot is not specified.
  2. SMM (System Management Mode) is not included.

These differences might be due to variations in arm64 support, but it's worth clarifying.

To ensure this is intentional and not an oversight, please verify the EFI and SMM support for RHEL 10 Beta on arm64:

#!/bin/bash
# Check RHEL documentation or release notes for arm64 EFI and SMM support
curl -s https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/10-beta | grep -i "arm64.*EFI"
curl -s https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/10-beta | grep -i "arm64.*SMM"

If EFI and SMM are supported for RHEL 10 Beta on arm64, consider adding these specifications to maintain feature parity with the amd64 version.


27-52: Approved, but note the deprecated status

The VirtualMachineClusterPreference for CentOS 7 is correctly configured with appropriate resource allocations and virtio devices. However, it's important to note that this configuration is marked as deprecated, which aligns with CentOS 7's approaching end-of-life status.

To ensure users are aware of the deprecated status, run the following command:


386-413: Approved, but clarify EFI and SMM support for arm64

The VirtualMachineClusterPreference for Fedora (arm64) is well-configured and consistent with the amd64 version in terms of resource allocation and modern features like RNG and network interface multi-queue. However, there are some notable differences:

  1. EFI firmware with secure boot is not specified.
  2. SMM (System Management Mode) is not included.

These differences might be due to variations in arm64 support, but it's worth clarifying.

To ensure this is intentional and not an oversight, please verify the EFI and SMM support for Fedora on arm64:

If EFI and SMM are supported for Fedora on arm64, consider adding these specifications to maintain feature parity with the amd64 version.

packages/system/kubevirt-instancetypes/templates/instancetypes.yaml (4)

1-257: Excellent configuration for the CX Series instance types

The CX Series instance types are well-designed for compute-intensive applications. Key points:

  1. Consistent use of dedicated CPU placement, isolated emulator threads, and hugepages across all instance types.
  2. NUMA topology provided to the VM, which is beneficial for performance-sensitive applications.
  3. Logical scaling of CPU and memory resources across instance types (medium to 8xlarge).
  4. Clear annotations and labels for easy identification and management.

This configuration should provide excellent performance for compute-intensive workloads while offering flexibility in resource allocation.


543-781: Excellent N Series configuration for network-intensive DPDK applications

The N Series instance types are exceptionally well-designed for network-intensive workloads, particularly DPDK applications:

  1. Consistent use of dedicated CPU placement and isolated emulator threads, which is crucial for predictable network performance.
  2. Implementation of 1Gi hugepages across all instance types, which is ideal for DPDK applications.
  3. Smart use of annotations to disable CPU load balancing, CPU quota, and IRQ load balancing, further optimizing for network performance.
  4. Logical scaling of CPU and memory resources across instance types (medium to 8xlarge).
  5. Clear requirement for nodes capable of running DPDK workloads, ensuring proper placement.

This configuration should provide excellent performance for network-intensive workloads, especially those leveraging DPDK. The specialized nature of these instance types is well-communicated through the annotations and labels.


1361-1649: Well-designed U Series for general purpose applications

The U Series instance types offer a flexible and efficient solution for general purpose workloads:

  1. Wide range of instance sizes from nano (1 CPU, 512Mi memory) to 8xlarge (32 CPUs, 128Gi memory), providing excellent flexibility for various application needs.
  2. Consistent configuration across all instance types, making it easy for users to understand and choose the appropriate size.
  3. Appropriate use of shared resources (no dedicated CPU placement or hugepages), which is suitable for general-purpose workloads and allows for better overall resource utilization.
  4. Clear annotations and labels for easy identification and management.

The U Series strikes a good balance between flexibility and resource efficiency, making it suitable for a wide range of applications that don't require specialized resources.

One potential enhancement to consider:

For the larger instance types (e.g., 4xlarge and 8xlarge), you might want to offer an option with dedicated CPU placement for users who need more predictable performance for their larger workloads. This could be implemented as a separate sub-series or as an optional configuration.


1-1649: Comprehensive and well-structured instance type definitions

This configuration file provides a robust and diverse set of instance types that cater to a wide range of use cases. Key strengths include:

  1. Logical organization into distinct series (CX, GN, M, N, O, RT, U), each tailored for specific workload requirements.
  2. Consistent configuration within each series, making it easy for users to understand and choose appropriate instance types.
  3. Good scaling of resources across instance sizes within each series.
  4. Thoughtful use of features like dedicated CPU placement, hugepages, and NUMA topology where appropriate.

While the overall configuration is excellent, there are a few areas that could benefit from further consideration:

  1. GN Series: Review the deprecated status and consider supporting multiple GPU models or configurations.
  2. O Series: Evaluate the fixed 50% memory overcommit strategy and consider implementing variable overcommit percentages based on instance size.
  3. U Series: Consider offering dedicated CPU placement options for larger instance sizes.

These enhancements could further improve the flexibility and performance characteristics of the instance types, catering to an even wider range of user needs.

Comment on lines +259 to +401

*GN* is the abbreviation of "GPU NVIDIA".

This series is intended to be used with VMs consuming GPUs
provided by the
[NVIDIA GPU Operator](https://github.com/NVIDIA/gpu-operator)
which can be installed on Kubernetes and also is made available
on OpenShift via OperatorHub.
instancetype.kubevirt.io/displayName: GPU NVIDIA
labels:
instancetype.kubevirt.io/class: gpu.nvidia
instancetype.kubevirt.io/cpu: "16"
instancetype.kubevirt.io/deprecated: "true"
instancetype.kubevirt.io/gpus: "true"
instancetype.kubevirt.io/icon-pf: fa-microchip
instancetype.kubevirt.io/memory: 64Gi
instancetype.kubevirt.io/size: 4xlarge
instancetype.kubevirt.io/vendor: kubevirt.io
instancetype.kubevirt.io/version: "1"
name: gn1.4xlarge
spec:
cpu:
guest: 16
gpus:
- deviceName: nvidia.com/A400
name: gpu1
memory:
guest: 64Gi
---
apiVersion: instancetype.kubevirt.io/v1beta1
kind: VirtualMachineClusterInstancetype
metadata:
annotations:
instancetype.kubevirt.io/description: |-
The GN Series provides instances types intended for VMs with
NVIDIA GPU resources attached.

*GN* is the abbreviation of "GPU NVIDIA".

This series is intended to be used with VMs consuming GPUs
provided by the
[NVIDIA GPU Operator](https://github.com/NVIDIA/gpu-operator)
which can be installed on Kubernetes and also is made available
on OpenShift via OperatorHub.
instancetype.kubevirt.io/displayName: GPU NVIDIA
labels:
instancetype.kubevirt.io/class: gpu.nvidia
instancetype.kubevirt.io/cpu: "32"
instancetype.kubevirt.io/deprecated: "true"
instancetype.kubevirt.io/gpus: "true"
instancetype.kubevirt.io/icon-pf: fa-microchip
instancetype.kubevirt.io/memory: 128Gi
instancetype.kubevirt.io/size: 8xlarge
instancetype.kubevirt.io/vendor: kubevirt.io
instancetype.kubevirt.io/version: "1"
name: gn1.8xlarge
spec:
cpu:
guest: 32
gpus:
- deviceName: nvidia.com/A400
name: gpu1
memory:
guest: 128Gi
---
apiVersion: instancetype.kubevirt.io/v1beta1
kind: VirtualMachineClusterInstancetype
metadata:
annotations:
instancetype.kubevirt.io/description: |-
The GN Series provides instances types intended for VMs with
NVIDIA GPU resources attached.

*GN* is the abbreviation of "GPU NVIDIA".

This series is intended to be used with VMs consuming GPUs
provided by the
[NVIDIA GPU Operator](https://github.com/NVIDIA/gpu-operator)
which can be installed on Kubernetes and also is made available
on OpenShift via OperatorHub.
instancetype.kubevirt.io/displayName: GPU NVIDIA
labels:
instancetype.kubevirt.io/class: gpu.nvidia
instancetype.kubevirt.io/cpu: "4"
instancetype.kubevirt.io/deprecated: "true"
instancetype.kubevirt.io/gpus: "true"
instancetype.kubevirt.io/icon-pf: fa-microchip
instancetype.kubevirt.io/memory: 16Gi
instancetype.kubevirt.io/size: xlarge
instancetype.kubevirt.io/vendor: kubevirt.io
instancetype.kubevirt.io/version: "1"
name: gn1.xlarge
spec:
cpu:
guest: 4
gpus:
- deviceName: nvidia.com/A400
name: gpu1
memory:
guest: 16Gi
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Consider revising the GN Series instance types

The GN Series for NVIDIA GPU resources is well-structured, but there are some concerns:

  1. All GN Series instance types are marked as deprecated. This raises questions about their intended use and future support. Consider clarifying the deprecation status or providing alternative GPU-enabled instance types.

  2. The GPU configuration is limited to a single model (nvidia.com/A400). To improve flexibility, consider:

    • Supporting multiple GPU models.
    • Allowing for multiple GPUs in larger instance types.
  3. The CPU and memory scaling is logical, but you might want to consider if the GPU resources should also scale with the instance size.

Please clarify the deprecation status of these instance types and consider the suggested improvements for flexibility and scalability.

Comment on lines +783 to +1015
annotations:
instancetype.kubevirt.io/description: |-
The O Series is based on the U Series, with the only difference
being that memory is overcommitted.

*O* is the abbreviation for "Overcommitted".
instancetype.kubevirt.io/displayName: Overcommitted
labels:
instancetype.kubevirt.io/class: overcommitted
instancetype.kubevirt.io/cpu: "1"
instancetype.kubevirt.io/icon-pf: pficon-virtual-machine
instancetype.kubevirt.io/memory: 1Gi
instancetype.kubevirt.io/size: micro
instancetype.kubevirt.io/vendor: kubevirt.io
instancetype.kubevirt.io/version: "1"
name: o1.micro
spec:
cpu:
guest: 1
memory:
guest: 1Gi
overcommitPercent: 50
---
apiVersion: instancetype.kubevirt.io/v1beta1
kind: VirtualMachineClusterInstancetype
metadata:
annotations:
instancetype.kubevirt.io/description: |-
The O Series is based on the U Series, with the only difference
being that memory is overcommitted.

*O* is the abbreviation for "Overcommitted".
instancetype.kubevirt.io/displayName: Overcommitted
labels:
instancetype.kubevirt.io/class: overcommitted
instancetype.kubevirt.io/cpu: "1"
instancetype.kubevirt.io/icon-pf: pficon-virtual-machine
instancetype.kubevirt.io/memory: 512Mi
instancetype.kubevirt.io/size: nano
instancetype.kubevirt.io/vendor: kubevirt.io
instancetype.kubevirt.io/version: "1"
name: o1.nano
spec:
cpu:
guest: 1
memory:
guest: 512Mi
overcommitPercent: 50
---
apiVersion: instancetype.kubevirt.io/v1beta1
kind: VirtualMachineClusterInstancetype
metadata:
annotations:
instancetype.kubevirt.io/description: |-
The O Series is based on the U Series, with the only difference
being that memory is overcommitted.

*O* is the abbreviation for "Overcommitted".
instancetype.kubevirt.io/displayName: Overcommitted
labels:
instancetype.kubevirt.io/class: overcommitted
instancetype.kubevirt.io/cpu: "1"
instancetype.kubevirt.io/icon-pf: pficon-virtual-machine
instancetype.kubevirt.io/memory: 2Gi
instancetype.kubevirt.io/size: small
instancetype.kubevirt.io/vendor: kubevirt.io
instancetype.kubevirt.io/version: "1"
name: o1.small
spec:
cpu:
guest: 1
memory:
guest: 2Gi
overcommitPercent: 50
---
apiVersion: instancetype.kubevirt.io/v1beta1
kind: VirtualMachineClusterInstancetype
metadata:
annotations:
instancetype.kubevirt.io/description: |-
The O Series is based on the U Series, with the only difference
being that memory is overcommitted.

*O* is the abbreviation for "Overcommitted".
instancetype.kubevirt.io/displayName: Overcommitted
labels:
instancetype.kubevirt.io/class: overcommitted
instancetype.kubevirt.io/cpu: "4"
instancetype.kubevirt.io/icon-pf: pficon-virtual-machine
instancetype.kubevirt.io/memory: 16Gi
instancetype.kubevirt.io/size: xlarge
instancetype.kubevirt.io/vendor: kubevirt.io
instancetype.kubevirt.io/version: "1"
name: o1.xlarge
spec:
cpu:
guest: 4
memory:
guest: 16Gi
overcommitPercent: 50
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

⚠️ Potential issue

Caution advised with O Series memory overcommit configuration

The O Series instance types introduce an interesting concept of memory overcommitment:

  1. Consistent 50% memory overcommit across all instance types.
  2. Wide range of instance sizes from nano to 8xlarge, providing flexibility.

However, there are some concerns and potential improvements to consider:

  1. Fixed 50% overcommit may not be optimal for all workloads or instance sizes. Consider varying the overcommit percentage based on instance size or workload type.

  2. Memory overcommitment can lead to performance issues if not carefully managed. Ensure that users are well-informed about the potential risks and best practices for using these instance types.

  3. Consider adding safeguards or monitoring recommendations to prevent issues related to memory overcommitment.

Please review the fixed 50% overcommit strategy and consider implementing variable overcommit percentages or additional safeguards. Also, ensure clear documentation is provided to users about the implications of using overcommitted instance types.

Consider implementing a variable overcommit percentage based on instance size:

spec:
  cpu:
    guest: 8
  memory:
    guest: 32Gi
    overcommitPercent: 30  # Lower percentage for larger instances

This approach could provide better resource utilization across different instance sizes.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Outside diff range and nitpick comments (4)
packages/apps/vm-disk/templates/dv.yaml (2)

4-8: LGTM: Well-structured metadata with a suggestion for documentation.

The metadata section is correctly implemented, using appropriate annotations and naming conventions.

Consider adding a comment explaining the purpose and possible values of the vm-disk.cozystack.io/optical annotation for better maintainability.


13-28: LGTM: Well-structured source specification with a suggestion for error handling.

The source specification section is well-implemented, handling different source types and including proper validation. The content type is correctly set, and the required field check for the HTTP URL is a good practice.

Consider adding an else clause to handle cases where an unsupported source type is provided. This would make the error handling more robust:

{{- else }}
  {{- fail "Unsupported source type. Supported types are 'http' and 'upload'." }}
{{- end }}
🧰 Tools
🪛 yamllint

[warning] 13-13: wrong indentation: expected 0 but found 2

(indentation)

packages/apps/vm-disk/templates/pvc-resize-hook.yaml (2)

1-26: LGTM! Consider parameterizing the kubectl image.

The conditional logic and Job definition for PVC resizing are well-implemented. The use of Helm hooks ensures proper execution timing, and the kubectl command for patching the PVC is correct.

Consider parameterizing the kubectl image (line 22) to allow for easier updates and customization:

- image: bitnami/kubectl
+ image: {{ .Values.kubectlImage | default "bitnami/kubectl" }}

This change would require adding a new value to your values.yaml file:

kubectlImage: bitnami/kubectl
🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)


1-68: Overall template structure is correct, yamllint error can be ignored.

The Helm template is well-structured with proper use of conditional logic and consistent indentation. The yamllint error reported for line 1 is a false positive due to the Helm templating syntax and can be safely ignored.

To suppress the yamllint warning, you could add a # yamllint disable directive at the beginning of the file:

# yamllint disable
{{- $existingPVC := lookup "v1" "PersistentVolumeClaim" .Release.Namespace .Release.Name }}

This is optional and only necessary if you want to maintain a clean yamllint output.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 6d864ed and f81e343.

📒 Files selected for processing (2)
  • packages/apps/vm-disk/templates/dv.yaml (1 hunks)
  • packages/apps/vm-disk/templates/pvc-resize-hook.yaml (1 hunks)
🧰 Additional context used
🪛 yamllint
packages/apps/vm-disk/templates/dv.yaml

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)


[warning] 12-12: wrong indentation: expected 0 but found 2

(indentation)


[error] 12-12: trailing spaces

(trailing-spaces)


[warning] 13-13: wrong indentation: expected 0 but found 2

(indentation)

packages/apps/vm-disk/templates/pvc-resize-hook.yaml

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)

🔇 Additional comments (6)
packages/apps/vm-disk/templates/dv.yaml (3)

1-3: LGTM: Proper resource lookup and API declaration.

The existing DataVolume lookup and API version declaration are correctly implemented. This approach allows for updates to existing resources and uses the appropriate API version for CDI DataVolumes.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)


29-36: LGTM: Properly structured storage specification.

The storage specification section is well-implemented. It correctly templates the storage request from Helm values and conditionally includes the storage class. The indentation and structure are correct, following YAML best practices.


1-36: Overall: Well-implemented DataVolume template with minor improvements needed.

This new YAML template for DataVolume resources is well-structured and aligns with the PR objectives of introducing instance types and profiles for the CozyStack platform. It provides a flexible configuration for managing virtual machine disks, supporting various source types and storage options.

Key strengths:

  1. Proper use of Helm templating for dynamic configuration.
  2. Handling of existing DataVolume resources.
  3. Flexible source type specification with validation.
  4. Conditional inclusion of storage class.

Areas for improvement:

  1. Minor indentation and trailing space issues (addressed in previous comments).
  2. Consider adding more robust error handling for unsupported source types.
  3. Add documentation for custom annotations to improve maintainability.

Overall, this file provides a solid foundation for managing DataVolumes in the CozyStack platform, contributing to the introduction of instance types and profiles as outlined in the PR objectives.

🧰 Tools
🪛 yamllint

[error] 1-1: syntax error: expected the node content, but found '-'

(syntax)


[warning] 12-12: wrong indentation: expected 0 but found 2

(indentation)


[error] 12-12: trailing spaces

(trailing-spaces)


[warning] 13-13: wrong indentation: expected 0 but found 2

(indentation)

packages/apps/vm-disk/templates/pvc-resize-hook.yaml (3)

28-35: ServiceAccount definition looks good!

The ServiceAccount is correctly defined with appropriate Helm hook annotations, ensuring it's created before the Job that uses it. The name matches the one referenced in the Job spec, maintaining consistency.


53-67: RoleBinding definition is correct and consistent.

The RoleBinding is well-defined with appropriate Helm hook annotations. It correctly binds the ServiceAccount to the Role, and the names of the ServiceAccount and Role match the previously defined resources, ensuring proper permissions for the resize operation.


37-51: Role definition is correct, but consider reviewing permissions.

The Role is well-defined with appropriate Helm hook annotations and grants necessary permissions for managing StatefulSets and PVCs.

However, the 'delete' permission for StatefulSets (line 48) seems excessive for a resize operation. Please verify if this permission is necessary:

If the 'delete' permission is not required, consider removing it to adhere to the principle of least privilege.

Comment on lines +9 to +12
spec:
{{- if $existingDV }}
{{- toYaml $existingDV.spec | nindent 2 }}
{{- else }}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Fix indentation and remove trailing space.

The logic for handling existing DataVolume specs is correct. However, there are two minor issues:

  1. The indentation for the existing spec (line 11) should be 4 spaces instead of 2 for consistency with YAML best practices.
  2. There's a trailing space on line 12 that should be removed.

Please apply the following changes:

 spec:
   {{- if $existingDV }}
-    {{- toYaml $existingDV.spec | nindent 2 }}
-  {{- else }} 
+    {{- toYaml $existingDV.spec | nindent 4 }}
+  {{- else }}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
spec:
{{- if $existingDV }}
{{- toYaml $existingDV.spec | nindent 2 }}
{{- else }}
spec:
{{- if $existingDV }}
{{- toYaml $existingDV.spec | nindent 4 }}
{{- else }}
🧰 Tools
🪛 yamllint

[warning] 12-12: wrong indentation: expected 0 but found 2

(indentation)


[error] 12-12: trailing spaces

(trailing-spaces)

@kvaps kvaps merged commit ced8e5b into main Oct 16, 2024
0 of 2 checks passed
@kvaps kvaps deleted the instance-types branch October 16, 2024 16:35
kvaps added a commit that referenced this pull request Oct 17, 2024
Revert removing Virtual Machine, removed by
#403

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Introduced a new package: `virtual-machine` with multiple version
entries.
- Added comprehensive documentation and configuration for the
`virtual-machine` application.
- New Helm chart and templates for Kubernetes resources, enhancing
deployment options.

- **Bug Fixes**
- Updated version entries for existing packages, ensuring accuracy in
versioning.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant