Skip to content

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

Merged
dperny merged 3 commits intomoby:masterfrom
corhere:refactor_initializers
Jul 7, 2023
Merged

manager/allocator/cnmallocator: convert to new-style driver registration#3143
dperny merged 3 commits intomoby:masterfrom
corhere:refactor_initializers

Conversation

@corhere
Copy link
Copy Markdown
Collaborator

@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
…054c (25.0-dev)

full diff: moby/moby@75ee002...98d3da7

Signed-off-by: Cory Snider <csnider@mirantis.com>
This function was not using the DriverCallback interface, and only
required the Registerer interface.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
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 <csnider@mirantis.com>
@corhere corhere force-pushed the refactor_initializers branch from 23ee78f to 7d1f657 Compare July 7, 2023 15:53
@corhere
Copy link
Copy Markdown
Collaborator Author

corhere commented Jul 7, 2023

@thaJeztah @dperny PTAL

Copy link
Copy Markdown
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
Copy Markdown
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