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

Revert declaration that _our_ plugin provides QoS support #9856

Merged
merged 1 commit into from
Feb 17, 2025

Conversation

nelljerram
Copy link
Member

In fact QoS support is provided by the 'qos' service plugin, which is configured with

service_plugins = qos

in /etc/neutron/neutron.conf. It's wrong to declare it here as well, and that causes a traceback ending with:

2025-02-17 12:34:56.469 40638 ERROR neutron   File "/usr/lib/python3/dist-packages/neutron/api/extensions.py", line 492, in __init__
2025-02-17 12:34:56.469 40638 ERROR neutron     self.check_if_plugin_extensions_loaded()
2025-02-17 12:34:56.469 40638 ERROR neutron   File "/usr/lib/python3/dist-packages/neutron/api/extensions.py", line 572, in check_if_plugin_extensions_loaded
2025-02-17 12:34:56.469 40638 ERROR neutron     raise exceptions.ExtensionsNotFound(
2025-02-17 12:34:56.469 40638 ERROR neutron neutron_lib.exceptions.ExtensionsNotFound: Extensions not found: ['qos'].

Looking at check_if_plugin_extensions_loaded, we see

def check_if_plugin_extensions_loaded(self):
    """Check if an extension supported by a plugin has been loaded."""
    plugin_extensions = self.get_supported_extension_aliases()
    missing_aliases = plugin_extensions - set(self.extensions)
    missing_aliases -= _PLUGIN_AGNOSTIC_EXTENSIONS
    if missing_aliases:
        raise exceptions.ExtensionsNotFound(
            extensions=list(missing_aliases))

so it's clear that this is caused by the wrong _supported_extension_aliases declaration in our plugin code.

In fact QoS support is provided by the 'qos' service plugin, which is configured with

    service_plugins = qos

in `/etc/neutron/neutron.conf`.  It's wrong to declare it here as well, and that causes a traceback
ending with:

    2025-02-17 12:34:56.469 40638 ERROR neutron   File "/usr/lib/python3/dist-packages/neutron/api/extensions.py", line 492, in __init__
    2025-02-17 12:34:56.469 40638 ERROR neutron     self.check_if_plugin_extensions_loaded()
    2025-02-17 12:34:56.469 40638 ERROR neutron   File "/usr/lib/python3/dist-packages/neutron/api/extensions.py", line 572, in check_if_plugin_extensions_loaded
    2025-02-17 12:34:56.469 40638 ERROR neutron     raise exceptions.ExtensionsNotFound(
    2025-02-17 12:34:56.469 40638 ERROR neutron neutron_lib.exceptions.ExtensionsNotFound: Extensions not found: ['qos'].

Looking at `check_if_plugin_extensions_loaded`, we see

    def check_if_plugin_extensions_loaded(self):
        """Check if an extension supported by a plugin has been loaded."""
        plugin_extensions = self.get_supported_extension_aliases()
        missing_aliases = plugin_extensions - set(self.extensions)
        missing_aliases -= _PLUGIN_AGNOSTIC_EXTENSIONS
        if missing_aliases:
            raise exceptions.ExtensionsNotFound(
                extensions=list(missing_aliases))

so it's clear that this is caused by the wrong `_supported_extension_aliases` declaration in our
plugin code.
@nelljerram nelljerram requested a review from a team as a code owner February 17, 2025 12:49
@marvin-tigera marvin-tigera added this to the Calico v3.30.0 milestone Feb 17, 2025
@marvin-tigera marvin-tigera added release-note-required Change has user-facing impact (no matter how small) docs-pr-required Change is not yet documented labels Feb 17, 2025
@nelljerram nelljerram added docs-not-required Docs not required for this change release-note-not-required Change has no user-facing impact and removed release-note-required Change has user-facing impact (no matter how small) docs-pr-required Change is not yet documented labels Feb 17, 2025
@nelljerram
Copy link
Member Author

(This declaration was mistakenly added in #9811 )

@nelljerram
Copy link
Member Author

(This is why calico-test CI is currently 100% fail, since the merging of #9811 )

@nelljerram nelljerram merged commit a90327e into projectcalico:master Feb 17, 2025
6 of 8 checks passed
@nelljerram nelljerram deleted the qos-openstack-fixes branch February 17, 2025 13:24
nelljerram added a commit to nelljerram/calico that referenced this pull request Feb 20, 2025
Sorry, these are more required plumbing changes that I missed in projectcalico#9811 and projectcalico#9856.

Also a key fix to query bandwidth limit and packet rate rules directly, instead of via the policy, as the policy object does not really have a 'rules' attribute.

After these, I've verified that I can execute the QoS workflow in https://docs.openstack.org/neutron/latest/admin/config-qos.html#user-workflow.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs-not-required Docs not required for this change release-note-not-required Change has no user-facing impact
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants