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

[WIP]OCPBUGS-42701-api: Updated the disableMultiNetwork parameter description #2143

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

dfitzmau
Copy link
Contributor

@dfitzmau dfitzmau commented Jan 14, 2025

Updating the disableMultiNetwork parameter description based on feedback from

Issue:
OCPBUGS-42701

Key updates:

  • DAY 1 only updates.
  • Use of a third-party CNI that is unsupported by Red Hat.

Copy link
Contributor

openshift-ci bot commented Jan 14, 2025

Hello @dfitzmau! Some important instructions when contributing to openshift/api:
API design plays an important part in the user experience of OpenShift and as such API PRs are subject to a high level of scrutiny to ensure they follow our best practices. If you haven't already done so, please review the OpenShift API Conventions and ensure that your proposed changes are compliant. Following these conventions will help expedite the api review process for your PR.

@openshift-ci openshift-ci bot added the size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. label Jan 14, 2025
@openshift-ci openshift-ci bot requested review from deads2k and JoelSpeed January 14, 2025 11:35
@JoelSpeed
Copy link
Contributor

The openapi schema that you have updated is generated from the Go API types, you will need to update the Go types and then generate the openapi schema (and other generations) to make sure everything is updated

@dfitzmau dfitzmau force-pushed the OCPBUGS-42701-api branch 4 times, most recently from 3a639f2 to b2aa868 Compare January 14, 2025 14:16
@openshift-ci openshift-ci bot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. and removed size/XS Denotes a PR that changes 0-9 lines, ignoring generated files. labels Jan 14, 2025
@dfitzmau dfitzmau changed the title OCPBUGS-42701-api: Updated the disableMultiNetwork parameter description [WIP]OCPBUGS-42701-api: Updated the disableMultiNetwork parameter description Jan 14, 2025
@openshift-ci openshift-ci bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Jan 14, 2025
operator/v1/types_network.go Outdated Show resolved Hide resolved
operator/v1/types_network.go Outdated Show resolved Hide resolved
operator/v1/types_network.go Outdated Show resolved Hide resolved
@JoelSpeed
Copy link
Contributor

Code generation is outdated, please run make update

// disableMultiNetwork enables multiple network support when the OVN-Kubernetes Container Network Interface (CNI)
// plugin sets the parameter to the default value of 'false'. During cluster installation only, you can use a
// third-party CNI, such as Multus CNI, to set the disableMultiNetwork parameter to 'true', and this setting disables
// multiple pod network support. Red Hat does not support third-party CNIs.
Copy link
Member

Choose a reason for hiding this comment

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

I think we need a few tweaks...

My I suggest...

// disableMultiNetwork when set to true at cluster install will disable the installation of components which enable pod multinetworking, especially utilizing Multus CNI and network-attachment-definition custom resources. The default value is false.
// This option may potentially be useful for installation of third party CNI plugins, however, this is not supported by Red Hat.
// Setting this option after cluster install has no effect.

Happy to take a mix of the two, but, we should definitely remove: you can use a third-party CNI, such as Multus CNI, to set the disableMultiNetwork parameter to 'true'. As setting this to true by the user in the install-config will install Multus, might be the confusion.

@dfitzmau dfitzmau force-pushed the OCPBUGS-42701-api branch 2 times, most recently from efcec91 to 70a6e5d Compare January 15, 2025 15:45
Copy link
Contributor

openshift-ci bot commented Jan 15, 2025

@dfitzmau: all tests passed!

Full PR test history. Your PR dashboard.

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. I understand the commands that are listed here.

Copy link
Member

@dougbtv dougbtv left a comment

Choose a reason for hiding this comment

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

/lgtm

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

/lgtm

Copy link
Contributor

openshift-ci bot commented Jan 16, 2025

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: dfitzmau, dougbtv, weliang1
Once this PR has been reviewed and has the lgtm label, please assign bparees for approval. For more information see the Code Review Process.

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

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

@dfitzmau
Copy link
Contributor Author

Hi @JoelSpeed . Thanks for your help and patience. I received all the approvals on the PR. Is the PR OK to merge?

// disableMultiNetwork defaults to 'false' and this setting enables the pod multi-networking capability.
// disableMultiNetwork when set to 'true' at cluster install time does not install the components, typically the Multus CNI and the network-attachment-definition CRD,
// that enable the pod multi-networking capability. Setting the parameter to 'true' might be useful when you need install third-party CNI plugins,
// but these plugins are not supported by Red Hat. Changing the parameter value as a postinstallation cluster task has no effect.
Copy link
Contributor

Choose a reason for hiding this comment

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

Is postinstallation supposed to be one word?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Yes, it matches the noun adopted in our official docs.

// disableMultiNetwork defaults to 'false' and this setting enables the pod multi-networking capability.
// disableMultiNetwork when set to 'true' at cluster install time does not install the components, typically the Multus CNI and the network-attachment-definition CRD,
// that enable the pod multi-networking capability. Setting the parameter to 'true' might be useful when you need install third-party CNI plugins,
// but these plugins are not supported by Red Hat. Changing the parameter value as a postinstallation cluster task has no effect.
DisableMultiNetwork *bool `json:"disableMultiNetwork,omitempty"`
Copy link
Contributor

Choose a reason for hiding this comment

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

Should we make this immutable then given changing it has no effect? What does changing it from true to false mean here? And vice versa?

If it's false by default, some components get installed? If you later try to change it to true, the operator doesn't react to this? If it was true, and you change it to false, it doesn't then install the components?

Why would I want to disable this?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It really boils down to using third-party CNIs that are unsupported. Maybe I could expand on what pod multi-networking does on how it might be unique to OCP?

Copy link
Member

Choose a reason for hiding this comment

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

If there's a way to make it immutable post install, that's great.

Here's the thing -- we don't know who we'll break if it make it so you can't use this during install. It's possible that third parties have relied on it.

It was originally here as a fail-safe during 4.0.0, the original openshift 4 when this component was released. Honestly, kind of a feature gate in case we ran into some kind of failure, which didn't happen.

Copy link
Contributor

Choose a reason for hiding this comment

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

You can use CEL to write something to make it immutable.

There are a couple of things to consider with that, the field being completely missing from the document (because it's a nil pointer) means that someone can add a value later, and that might be true, or false. We could add a transition rule to the parent to prevent this.

Once it's set, an easy self == oldSelf rule would prevent it from being changed later to another value.

If, as mentioned, changing the value does nothing, what would someone relying on being able to change this actually mean?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. lgtm Indicates that a PR is ready to be merged. size/M Denotes a PR that changes 30-99 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants