← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1925388] [NEW] Incorrect reference to 802.1ad in network_data.json schema

 

Public bug reported:

This affects multiple projects, including nova and ironic, and can
(currently, at least) be seen in multiple references to "802.1ad" across
multiple projects:

https://codesearch.opendev.org/?q=802%5C.1ad&i=nope&files=&excludeFiles=&repos=

I'm not sure how, or if it's even appropriate for these projects, to
file the bug in multiple places, so I'm filing it where I perceive the
error originates, in nova's definition of the network_data.json schema.

802.1ad is a nested VLAN specification, not a bonding mode
specification. When referencing VLANs in the above codesearch results,
it is used correctly. However, when seen in the context of bonding
interfaces, "802.1ad" is not a valid bond mode. It should instead, be
"802.3ad" (s/1/3/), indicating the LACP bonding mode.

This can be confirmed a number of ways, including searching for the
correct string across projects. This can also be seen by comparing the
enum of valid bond modes in the schema to the actual output of the
"bonding" kernel module info.

schema enum in what I believe is the corresponding version tag to
wallaby:

https://opendev.org/openstack/nova/src/tag/23.0.0/doc/api_schemas/network_data.json#L177

output of `modinfo bonding | grep mode:`

  parm:           mode:Mode of operation; 0 for balance-rr, 1 for
active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5 for
balance-tlb, 6 for balance-alb (charp)

Note that the list of modes in the schema enum is almost exactly the
same as the list of modes mentioned in the bonding kernel driver info,
with the exception of the 802.1ad vs. 802.3ad difference. The list given
by the kernel driver is correct.

In terms of expected vs. actual results, my expected result was that
using a "bond_mode" of "802.3ad" when setting up a bond link in my
network_data.json would not trigger a validation error when validating
my JSON against the schema, since "802.3ad" is otherwise a valid bond
mode. However, due to this error, it does trigger a validation error:

  Message: Value "802.3ad" is not defined in enum.
  Schema path: http://openstack.org/nova/network_data.json#/definitions/bond/properties/bond_mode/enum

I have not yet attempted to use this network_data.json configuration, so
I don't yet know if specifying "802.1ad" results in the correct bonding
mode being used anyway. This bug appears to have existed since the
introduction of the schema: https://specs.openstack.org/openstack/nova-
specs/specs/liberty/implemented/metadata-service-network-info.html

** Affects: nova
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1925388

Title:
  Incorrect reference to 802.1ad in network_data.json schema

Status in OpenStack Compute (nova):
  New

Bug description:
  This affects multiple projects, including nova and ironic, and can
  (currently, at least) be seen in multiple references to "802.1ad"
  across multiple projects:

  https://codesearch.opendev.org/?q=802%5C.1ad&i=nope&files=&excludeFiles=&repos=

  I'm not sure how, or if it's even appropriate for these projects, to
  file the bug in multiple places, so I'm filing it where I perceive the
  error originates, in nova's definition of the network_data.json
  schema.

  802.1ad is a nested VLAN specification, not a bonding mode
  specification. When referencing VLANs in the above codesearch results,
  it is used correctly. However, when seen in the context of bonding
  interfaces, "802.1ad" is not a valid bond mode. It should instead, be
  "802.3ad" (s/1/3/), indicating the LACP bonding mode.

  This can be confirmed a number of ways, including searching for the
  correct string across projects. This can also be seen by comparing the
  enum of valid bond modes in the schema to the actual output of the
  "bonding" kernel module info.

  schema enum in what I believe is the corresponding version tag to
  wallaby:

  https://opendev.org/openstack/nova/src/tag/23.0.0/doc/api_schemas/network_data.json#L177

  output of `modinfo bonding | grep mode:`

    parm:           mode:Mode of operation; 0 for balance-rr, 1 for
  active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5
  for balance-tlb, 6 for balance-alb (charp)

  Note that the list of modes in the schema enum is almost exactly the
  same as the list of modes mentioned in the bonding kernel driver info,
  with the exception of the 802.1ad vs. 802.3ad difference. The list
  given by the kernel driver is correct.

  In terms of expected vs. actual results, my expected result was that
  using a "bond_mode" of "802.3ad" when setting up a bond link in my
  network_data.json would not trigger a validation error when validating
  my JSON against the schema, since "802.3ad" is otherwise a valid bond
  mode. However, due to this error, it does trigger a validation error:

    Message: Value "802.3ad" is not defined in enum.
    Schema path: http://openstack.org/nova/network_data.json#/definitions/bond/properties/bond_mode/enum

  I have not yet attempted to use this network_data.json configuration,
  so I don't yet know if specifying "802.1ad" results in the correct
  bonding mode being used anyway. This bug appears to have existed since
  the introduction of the schema: https://specs.openstack.org/openstack
  /nova-specs/specs/liberty/implemented/metadata-service-network-
  info.html

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1925388/+subscriptions


Follow ups