On Mon, Sep 27, 2021 at 2:05 PM Benjamin Reichel <[email protected]> wrote:
>
> Hi everyone,
>
> We are using OVN together with Openstack(Ussuri) with one of the late master 
> versions of ovn (83296a42e) and we see the following issue. After booting a 
> VM it is not possible to reach the metadata service in the corresponding 
> network namespace of the neutron-ovn-metadata-agent.service.
>
> It also turned out that a recompute of the rules on the ovn-controller fixes 
> the issue. After more debugging we could identify the change that introduced 
> this situation:
>
> commit d4bca93c0851c2f0b739411cd49ce32e3b8263bb "controller: Don't allocate 
> zone ids for non-VIF port bindings."
>
> diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
> index 678419ab3..739048cf8 100644
> --- a/controller/ovn-controller.c
> +++ b/controller/ovn-controller.c
> @@ -1919,6 +1919,11 @@ ct_zones_runtime_data_handler(struct engine_node 
> *node, void *data)
>          struct shash_node *shash_node;
>          SHASH_FOR_EACH (shash_node, &tdp->lports) {
>              struct tracked_lport *t_lport = shash_node->data;
> +            if (strcmp(t_lport->pb->type, "")) {
> +                /* We allocate zone-id's only to VIF lports. */
> +                continue;
> +            }
> +
>              if (t_lport->tracked_type == TRACKED_RESOURCE_NEW) {
>                  if (!simap_contains(&ct_zones_data->current,
>                                      t_lport->pb->logical_port)) {
>
> Anyone has an idea how to fix it?

Thank you for reporting this issue, I see the same thing here. Adding
"localport" to the approved list of lport types in the above mentioned
check resolves this specific issue:

diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
index a719beb0e..4202f32cc 100644
--- a/controller/ovn-controller.c
+++ b/controller/ovn-controller.c
@@ -1919,8 +1919,9 @@ ct_zones_runtime_data_handler(struct engine_node
*node, void *data)
         struct shash_node *shash_node;
         SHASH_FOR_EACH (shash_node, &tdp->lports) {
             struct tracked_lport *t_lport = shash_node->data;
-            if (strcmp(t_lport->pb->type, "")) {
-                /* We allocate zone-id's only to VIF lports. */
+            if (strcmp(t_lport->pb->type, "")
+                && strcmp(t_lport->pb->type, "localport")) {
+                /* We allocate zone-id's only to VIF and localport lports. */
                 continue;
             }

But it makes me wonder if other types should be on that list as well,
I added the authors of the two last changes in this area to Cc to see
if they have any insights and will also have a look at comparing the
output of the old and new implementation.

-- 
Frode Nordahl

> Regards,
> Benjamin
>
> _______________________________________________
> discuss mailing list
> [email protected]
> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
_______________________________________________
discuss mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to