Skip to content

MGMT-21373: Add the new virtualization operators to the UI#3101

Merged
openshift-merge-bot[bot] merged 2 commits intoopenshift-assisted:masterfrom
rivkyrizel:MGMT-21373
Aug 12, 2025
Merged

MGMT-21373: Add the new virtualization operators to the UI#3101
openshift-merge-bot[bot] merged 2 commits intoopenshift-assisted:masterfrom
rivkyrizel:MGMT-21373

Conversation

@rivkyrizel
Copy link
Contributor

@rivkyrizel rivkyrizel commented Aug 6, 2025

This PR adds 4 new operators to the virtualization bundle:

Cluster Observability, NUMA Resources, OADP, MetalLB.

All these operators are enabled only when the bundle is selected.

Screenshot 2025-08-10 at 11 16 21 Screenshot 2025-08-10 at 11 16 54 Screenshot 2025-08-10 at 11 17 14 Screenshot 2025-08-10 at 11 17 23

Summary by CodeRabbit

  • New Features

    • Added UI support for Cluster Observability, NUMA Resources, OADP, and MetalLB operators: descriptions, validation labels, and operator specs.
    • Expanded English translations for the new operator terms and requirements.
  • Documentation

    • Added in-app "Learn more" links to official docs for Cluster Observability, NUMA Resources, OADP, and MetalLB.

@openshift-ci openshift-ci bot requested review from ammont82 and jgyselov August 6, 2025 10:46
@coderabbitai
Copy link

coderabbitai bot commented Aug 6, 2025

Caution

Review failed

Failed to post review comments.

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between fa1300e and 8ee3910.

📒 Files selected for processing (6)
  • libs/locales/lib/en/translation.json (3 hunks)
  • libs/types/assisted-installer-service.d.ts (3 hunks)
  • libs/ui-lib/lib/common/components/operators/operatorDescriptions.tsx (1 hunks)
  • libs/ui-lib/lib/common/components/operators/operatorSpecs.tsx (6 hunks)
  • libs/ui-lib/lib/common/config/constants.ts (5 hunks)
  • libs/ui-lib/lib/common/config/docs_links.ts (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • libs/ui-lib/lib/common/components/operators/operatorDescriptions.tsx
🚧 Files skipped from review as they are similar to previous changes (2)
  • libs/locales/lib/en/translation.json
  • libs/ui-lib/lib/common/config/docs_links.ts
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: ammont82
PR: openshift-assisted/assisted-installer-ui#3101
File: libs/ui-lib/lib/common/config/docs_links.ts:203-221
Timestamp: 2025-08-11T06:07:38.038Z
Learning: The MetalLB, OADP, Cluster Observability, and NUMA Resources operators in the virtualization bundle don't require version fallback logic in their documentation link functions (getMetalLbLink, getOadpLink, getClusterObservabilityLink, getNumaResourcesLink) in libs/ui-lib/lib/common/config/docs_links.ts, unlike some other operators like LSO and NVIDIA GPU.
📚 Learning: 2025-08-11T06:07:38.038Z
Learnt from: ammont82
PR: openshift-assisted/assisted-installer-ui#3101
File: libs/ui-lib/lib/common/config/docs_links.ts:203-221
Timestamp: 2025-08-11T06:07:38.038Z
Learning: The MetalLB, OADP, Cluster Observability, and NUMA Resources operators in the virtualization bundle don't require version fallback logic in their documentation link functions (getMetalLbLink, getOadpLink, getClusterObservabilityLink, getNumaResourcesLink) in libs/ui-lib/lib/common/config/docs_links.ts, unlike some other operators like LSO and NVIDIA GPU.

Applied to files:

  • libs/ui-lib/lib/common/config/constants.ts
  • libs/ui-lib/lib/common/components/operators/operatorSpecs.tsx
🧬 Code Graph Analysis (1)
libs/ui-lib/lib/common/components/operators/operatorSpecs.tsx (3)
libs/ui-lib/lib/common/config/constants.ts (4)
  • OPERATOR_NAME_OADP (343-343)
  • OPERATOR_NAME_METALLB (344-344)
  • OPERATOR_NAME_CLUSTER_OBSERVABILITY (341-341)
  • OPERATOR_NAME_NUMA_RESOURCES (342-342)
libs/ui-lib/lib/common/components/operators/operatorDescriptions.tsx (4)
  • DESCRIPTION_OADP (66-67)
  • DESCRIPTION_METALLB (69-70)
  • DESCRIPTION_CLUSTER_OBSERVABILITY (60-61)
  • DESCRIPTION_NUMA_RESOURCES (63-64)
libs/ui-lib/lib/common/config/docs_links.ts (4)
  • getOadpLink (203-206)
  • getMetalLbLink (208-211)
  • getClusterObservabilityLink (213-216)
  • getNumaResourcesLink (218-221)
🔇 Additional comments (9)
libs/types/assisted-installer-service.d.ts (2)

685-689: New cluster validation IDs wired — looks consistent

The added validation IDs for Cluster Observability, NUMA Resources, OADP, and MetalLB align with the constants and UI labels. Good cross-file consistency with constants.ts clusterValidationLabels.


1663-1667: New host validation IDs added — good alignment

Host-level counterpart validations added and are labeled in constants.ts. LGTM.

libs/ui-lib/lib/common/config/constants.ts (3)

153-156: Host validation labels for new operators — LGTM

Labels are present for Cluster Observability, NUMA Resources, OADP, and MetalLB. Matches the new IDs in types.


257-260: Cluster validation labels added — LGTM

Cluster-level labels added for the same operators. Consistent with types and translations.


341-344: Verify operator slug consistency with assisted-service
The new constants in libs/ui-lib/lib/common/config/constants.ts use:

  • OPERATOR_NAME_NUMA_RESOURCES = 'numaresources'
  • OPERATOR_NAME_METALLB = 'metallb'

However, most operator keys in the backend are hyphenated (e.g. 'numa-resources'). A mismatch between these strings and the monitoredOperators.name values returned by /v2/clusters/{id} (or listed in /v2/supported-operators) will break filtering, toggles, and status mapping in the UI.

Please confirm that the backend actually emits exactly 'numaresources' and 'metallb' (no hyphen) for these operators. If the service uses hyphens ('numa-resources', 'metal-lb', etc.), update the constants accordingly:

• Location:

  • libs/ui-lib/lib/common/config/constants.ts:341-344
libs/ui-lib/lib/common/components/operators/operatorSpecs.tsx (4)

26-30: New imports for operator keys, descriptions, and docs links — LGTM

Imports are correct and align with constants/docs/description modules. Per team learnings, these four operators don’t require docs version fallback logic beyond getDocsOpenshiftVersion — current usage is appropriate.

Also applies to: 36-48, 85-89


331-344: MetalLB spec category differs from summary; confirm intended grouping

The AI summary mentioned Virtualization, but code places MetalLB under the Network category. Gating by the virtualization bundle still works via singleClusterOperators; only the UI grouping differs. If Network is intended, no action needed.

Would you like me to realign the summary note, or is the Network category the desired placement?


463-476: Cluster Observability spec category differs from summary; confirm category

Summary suggested Remediation, but the code places it under Platform Operations & Lifecycle. This placement seems reasonable. Confirm if this is the intended UX taxonomy.


508-521: NUMA Resources spec added under Scheduling — LGTM

Consistent with docs link and support level wiring. Matches validations and constants.

Walkthrough

Adds four OpenShift operator entries (Cluster Observability, NUMA Resources, OADP, MetalLB) across localization, type definitions, operator descriptions/specs, constants, and docs link helpers; all changes are additive.

Changes

Cohort / File(s) Change Summary
Localization Additions
libs/locales/lib/en/translation.json
Added English translation keys/values for the four operators and their "requirements" labels.
Type Definitions
libs/types/assisted-installer-service.d.ts
Extended union types ClusterValidationId, HostValidationId, FeatureSupportLevelId with four new members; added optional data?: { [name: string]: Record<string, unknown> } to CompletionParams.
Operator Descriptions
libs/ui-lib/lib/common/components/operators/operatorDescriptions.tsx
Added four exported description constants: DESCRIPTION_CLUSTER_OBSERVABILITY, DESCRIPTION_NUMA_RESOURCES, DESCRIPTION_OADP, DESCRIPTION_METALLB.
Operator Specifications
libs/ui-lib/lib/common/components/operators/operatorSpecs.tsx
Added operator specs for OADP, MetalLB, Cluster Observability, and NUMA Resources to getOperatorSpecs, including titles, featureIds, descriptions, doc links, and supportLevel wiring.
Operator Constants & Labels
libs/ui-lib/lib/common/config/constants.ts
Added new validation IDs to hostValidationLabels, hostValidationFailureHints, clusterValidationLabels; exported OPERATOR_NAME_* constants for the four operators and appended them to singleClusterOperators.
Documentation Links
libs/ui-lib/lib/common/config/docs_links.ts
Added getOadpLink, getMetalLbLink, getClusterObservabilityLink, and getNumaResourcesLink helpers that return version-aware Red Hat docs URLs.

Sequence Diagram(s)

sequenceDiagram
    participant UI
    participant OperatorSpecs
    participant Constants
    participant DocsLinks

    UI->>OperatorSpecs: Request list of operators
    OperatorSpecs->>Constants: Read operator names, validation IDs, descriptions
    OperatorSpecs->>DocsLinks: Build doc link (get*Link(openshiftVersion))
    OperatorSpecs-->>UI: Return operator specs (title, description, featureId, doc link, support level)
    UI-->>User: Render operator entries with descriptions and "Learn more" links
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

Suggested labels

lgtm, approved, size/M

Suggested reviewers

  • ammont82
  • rawagner
  • jgyselov

Poem

"I hopped through code, a curious sprite,
Four operators gleamed in morning light.
Obs, NUMA, OADP and MetalLB too,
Docs and labels stitched anew.
A rabbit's nibble — features in view! 🐇"

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ 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.
    • 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.
  • 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 the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

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

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • 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.

@rivkyrizel rivkyrizel closed this Aug 6, 2025
@openshift-ci
Copy link

openshift-ci bot commented Aug 6, 2025

Welcome @rivkyrizel! It looks like this is your first PR to openshift-assisted/assisted-installer-ui 🎉

@openshift-ci openshift-ci bot added the needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. label Aug 6, 2025
@openshift-ci
Copy link

openshift-ci bot commented Aug 6, 2025

Hi @rivkyrizel. Thanks for your PR.

I'm waiting for a openshift-assisted member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@openshift-ci openshift-ci bot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Aug 6, 2025
@rivkyrizel rivkyrizel reopened this Aug 10, 2025
Copy link

@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: 3

🧹 Nitpick comments (2)
libs/ui-lib/lib/common/components/operators/operatorSpecs.tsx (1)

331-344: Add MetalLB spec — network category fits; flags and links OK

Everything is consistent. Minor note: function name getMetalLbLink vs acronym casing is acceptable but could be unified project-wide.

If desired, rename to getMetalLBLink and update imports.

libs/ui-lib/lib/common/config/constants.ts (1)

224-227: Failure hints are empty — consider adding actionable guidance

The new validations have empty failure hints. If possible, add brief guidance or doc links to help users resolve failures, consistent with other validations.

-  'cluster-observability-requirements-satisfied': '',
+  'cluster-observability-requirements-satisfied': t('ai:Review Cluster Observability requirements and ensure resources and permissions are configured.'),
-  'numa-resources-requirements-satisfied': '',
+  'numa-resources-requirements-satisfied': t('ai:Enable NFD and verify NUMA topology/CPU pinning prerequisites.'),
-  'oadp-requirements-satisfied': '',
+  'oadp-requirements-satisfied': t('ai:Configure backup storage and OADP prerequisites.'),
-  'metallb-requirements-satisfied': '',
+  'metallb-requirements-satisfied': t('ai:Provide a pool of IP addresses for MetalLB and validate L2/L3 mode prerequisites.'),
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7aa4436 and e3a9969.

📒 Files selected for processing (6)
  • libs/locales/lib/en/translation.json (4 hunks)
  • libs/types/assisted-installer-service.d.ts (3 hunks)
  • libs/ui-lib/lib/common/components/operators/operatorDescriptions.tsx (1 hunks)
  • libs/ui-lib/lib/common/components/operators/operatorSpecs.tsx (6 hunks)
  • libs/ui-lib/lib/common/config/constants.ts (5 hunks)
  • libs/ui-lib/lib/common/config/docs_links.ts (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
libs/ui-lib/lib/common/components/operators/operatorSpecs.tsx (3)
libs/ui-lib/lib/common/config/constants.ts (4)
  • OPERATOR_NAME_OADP (343-343)
  • OPERATOR_NAME_METALLB (344-344)
  • OPERATOR_NAME_CLUSTER_OBSERVABILITY (341-341)
  • OPERATOR_NAME_NUMA_RESOURCES (342-342)
libs/ui-lib/lib/common/components/operators/operatorDescriptions.tsx (4)
  • DESCRIPTION_OADP (66-67)
  • DESCRIPTION_METALLB (69-70)
  • DESCRIPTION_CLUSTER_OBSERVABILITY (60-61)
  • DESCRIPTION_NUMA_RESOURCES (63-64)
libs/ui-lib/lib/common/config/docs_links.ts (4)
  • getOadpLink (203-206)
  • getMetalLbLink (208-211)
  • getClusterObservabilityLink (213-216)
  • getNumaResourcesLink (218-221)
🔇 Additional comments (11)
libs/ui-lib/lib/common/components/operators/operatorDescriptions.tsx (1)

60-70: Descriptions LGTM

Clear, concise, and consistent with existing operator descriptions. No changes needed.

libs/types/assisted-installer-service.d.ts (1)

685-690: All new “…-requirements-satisfied” IDs fully wired through the UI and feature logic

Confirmed via a repo-wide search that:

  • libs/ui-lib/lib/common/config/constants.ts
    • Validation label mappings include
    • 'cluster-observability-requirements-satisfied': t('ai:Cluster Observability requirements')
    • 'numa-resources-requirements-satisfied': t('ai:NUMA Resources requirements')
    • 'oadp-requirements-satisfied': t('ai:OADP requirements')
    • 'metallb-requirements-satisfied': t('ai:MetalLB requirements')
    • Blank-string fallbacks and repeat mappings also include the four new keys.

  • libs/ui-lib/lib/common/config/constants.ts
    • OPERATOR_NAME_CLUSTER_OBSERVABILITY
    • OPERATOR_NAME_NUMA_RESOURCES
    • OPERATOR_NAME_OADP
    • OPERATOR_NAME_METALLB

  • libs/ui-lib/lib/common/components/operators/operatorSpecs.tsx
    • singleClusterOperators array includes all four new operatorKeys
    • operatorSpecs entries reference featureId: 'CLUSTER_OBSERVABILITY', 'NUMA_RESOURCES', 'OADP', 'METALLB'

No further changes required.

libs/ui-lib/lib/common/components/operators/operatorSpecs.tsx (6)

26-29: Imports updated correctly

New operator name constants imported as expected. No issues.


36-47: Docs link imports are correct

New link getters are referenced properly.


85-89: Description constants imported correctly

Matches newly added exports. No issues.


193-206: Add OADP spec — correct category and wiring

  • Title/featureId/description/link consistent.
  • notStandalone and supportLevel usage match existing patterns.

Confirm OADP is enabled only when the virtualization bundle is selected (per PR goal). If gating is handled elsewhere, ensure OPERATOR_NAME_OADP is included in that bundle’s operator list.


463-476: Add Cluster Observability spec — platform category, gating, and support level OK

Implementation mirrors existing operators and uses the correct docs link.

Validate virtualization-bundle gating picks this operator up (OPERATOR_NAME_CLUSTER_OBSERVABILITY) so it only appears when expected.


508-521: Add NUMA Resources spec — scheduling category and details look good

  • Title/featureId/description/link consistent.
  • Marked notStandalone and wired to supportLevel.

As above, confirm virtualization bundle gating includes OPERATOR_NAME_NUMA_RESOURCES.

libs/ui-lib/lib/common/config/constants.ts (3)

257-260: Validation IDs present in service type definitions
Confirmed that all four cluster-level validation IDs are declared in libs/types/assisted-installer-service.d.ts (lines 686–689 and 1664–1667). TS remains aligned across layers.


153-156: i18n entries verified for new operator requirement labels

Confirmed that the following keys exist in libs/locales/lib/en/translation.json:

  • ai:Cluster Observability requirements (line 173)
  • ai:NUMA Resources requirements (line 604)
  • ai:OADP requirements (line 625)
  • ai:MetalLB requirements (line 524)

No further action needed.


341-344: Verify operator name constants against OLM and UI specs

Please ensure that the exported operator name constants in constants.ts align with both the values used in operatorSpecs.tsx and the identifiers expected by OLM or any validation logic—particularly:

  • OPERATOR_NAME_NUMA_RESOURCES = 'numaresources'
    Confirm whether the OLM bundle, API endpoints, or validation schemas require the hyphenated form ('numa-resources').
  • OPERATOR_NAME_CLUSTER_OBSERVABILITY, OPERATOR_NAME_OADP, OPERATOR_NAME_METALLB
    Verify these match their corresponding operator bundle metadata.

Key locations to check:
• libs/ui-lib/lib/common/config/constants.ts (lines 341–344)
• libs/ui-lib/lib/common/components/operators/operatorSpecs.tsx (imports at 26–29; NUMA resource spec at 509–511)

@rivkyrizel rivkyrizel changed the title Add the new virtualization operators to the UI MGMT-21373: Add the new virtualization operators to the UI Aug 10, 2025
@openshift-ci-robot
Copy link

openshift-ci-robot commented Aug 10, 2025

@rivkyrizel: This pull request references MGMT-21373 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.20.0" version, but no target version was set.

Details

In response to this:

This PR adds 4 new operators to the virtualization bundle:

Cluster Observability, NUMA Resources, OADP, MetalLB.

All these operators are enabled only when the bundle is selected.

Screenshot 2025-08-10 at 11 16 21 Screenshot 2025-08-10 at 11 16 54 Screenshot 2025-08-10 at 11 17 14 Screenshot 2025-08-10 at 11 17 23

Summary by CodeRabbit

  • New Features

  • Added support for Cluster Observability, NUMA Resources, OADP, and MetalLB operators, including their descriptions, validation labels, and specifications in the UI.

  • Introduced new documentation links for these operators, accessible from the interface.

  • Expanded English translations to cover new operator-related terms and requirements.

  • Documentation

  • Added direct links to official documentation for Cluster Observability, NUMA Resources, OADP, and MetalLB features.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Aug 10, 2025
@openshift-ci-robot
Copy link

openshift-ci-robot commented Aug 12, 2025

@rivkyrizel: This pull request references MGMT-21373 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.20.0" version, but no target version was set.

Details

In response to this:

This PR adds 4 new operators to the virtualization bundle:

Cluster Observability, NUMA Resources, OADP, MetalLB.

All these operators are enabled only when the bundle is selected.

Screenshot 2025-08-10 at 11 16 21 Screenshot 2025-08-10 at 11 16 54 Screenshot 2025-08-10 at 11 17 14 Screenshot 2025-08-10 at 11 17 23

Summary by CodeRabbit

  • New Features

  • Added UI support for Cluster Observability, NUMA Resources, OADP, and MetalLB operators: descriptions, validation labels, and operator specs.

  • Expanded English translations for the new operator terms and requirements.

  • Documentation

  • Added in-app "Learn more" links to official docs for Cluster Observability, NUMA Resources, OADP, and MetalLB.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci openshift-ci bot added the lgtm Indicates that a PR is ready to be merged. label Aug 12, 2025
@openshift-ci
Copy link

openshift-ci bot commented Aug 12, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: ammont82, rivkyrizel

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Aug 12, 2025
@openshift-merge-bot openshift-merge-bot bot merged commit c6b5da0 into openshift-assisted:master Aug 12, 2025
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. lgtm Indicates that a PR is ready to be merged. needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants