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

manager/allocator/cnmallocator: convert to new-style driver registration #3143

Merged
merged 3 commits into from
Jul 7, 2023

Conversation

corhere
Copy link
Contributor

@corhere corhere commented Jul 7, 2023

The libnetwork driver registry and driver Init() functions were deprecated in moby/moby@28edc8e in favour of separate registries for network and IPAM drivers and Register() functions for the drivers.

Refactor the network driver initializer list to be a map as the network types should be unique, and it allows IsBuiltInDriver() to run in O(1) time.

The remote drivers are a special case as they dynamically register plugins with the driver registries when the plugins are initialized. As they are the only drivers which need a PluginGetter, register the remote drivers separately as a special case rather than trying to continue shoehorning them into initializers and initIPAMDrivers().

There is no "remote" network type. However, Swarmkit has accepted it as a valid network type ever since support for selectable network drivers was first added in 5507383. This is a bug, as attempting to create such a network would ultimately fail. Special-casing the remote network driver incidentally fixes the bug as it is no longer present in initializers, which is used as the source of truth for IsBuiltinDriver().

- What I did

- How I did it

- How to test it

- Description for the changelog

corhere and others added 3 commits July 7, 2023 11:52
This function was not using the DriverCallback interface, and only
required the Registerer interface.

Signed-off-by: Sebastiaan van Stijn <[email protected]>
The libnetwork driver registry and driver Init() functions were
deprecated in moby/moby@28edc8e
in favour of separate registries for network and IPAM drivers and
Register() functions for the drivers.

Refactor the network driver initializer list to be a map as the network
types should be unique, and it allows IsBuiltInDriver() to run in O(1)
time.

The remote drivers are a special case as they dynamically register
plugins with the driver registries when the plugins are initialized.
As they are the only drivers which need a PluginGetter, register the
remote drivers separately as a special case rather than trying to
continue shoehorning them into initializers and initIPAMDrivers().

There is no "remote" network type. However, Swarmkit has accepted it as
a valid network type ever since support for selectable network drivers
was first added in 5507383. This is a
bug, as attempting to create such a network would ultimately fail.
Special-casing the remote network driver incidentally fixes the bug as
it is no longer present in initializers, which is used as the source of
truth for IsBuiltinDriver().

Signed-off-by: Cory Snider <[email protected]>
@corhere
Copy link
Contributor Author

corhere commented Jul 7, 2023

@thaJeztah @dperny PTAL

Copy link
Member

@thaJeztah thaJeztah left a comment

Choose a reason for hiding this comment

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

LGTM!

Copy link
Member

@thaJeztah thaJeztah left a comment

Choose a reason for hiding this comment

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

whoops wrong radio button

LGTM thus! 😂🤣

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.

3 participants