[ovs-dev] Combining monitor2 and monitor_cond methods
Liran Schour
LIRANS at il.ibm.com
Thu Nov 5 07:43:30 UTC 2015
Andy Zhou <azhou at nicira.com> wrote on 04/11/2015 05:20:08 PM:
> From: Andy Zhou <azhou at nicira.com>
> To: Liran Schour/Haifa/IBM at IBMIL
> Cc: dev <dev at openvswitch.org>
> Date: 04/11/2015 05:20 PM
> Subject: Re: Combining monitor2 and monitor_cond methods
>
> On Wed, Nov 4, 2015 at 5:22 AM, Liran Schour <LIRANS at il.ibm.com> wrote:
> > In order not to have 2 new monitor methods, maybe we should combine
them
> > into a single method.
> >
> > However, as I thought on this, monitor_cond without any conditions
should
> > not send any updates at all. A typical usage will be in OVN when
> > ovn-controller will open a monitor_cond session with empty
"where"condition
> > array and when VMs are deployed on this host, it will add conditions
by
> > monitor_cond_change method and by that will get all the updates
relevant to
> > that specific host.
> >
> > As I see it, we have here 2 options:
> > 1. monitor_cond without any "where" value will behave as the proposed
> > monitor2 method - send updates upon all rows using update2
notifications.
> > monitor_cond with "where" value that is an empty array will not
send any
> > updates at all till conditions are added by monitor_cond_change
method.
> >
> This can work, but the API seems subtle. So I'd prefer to explore the
> next option more.
>
> > 2. monitor_cond always sends updates. If there is no "where" value or
it is
> > an empty array, updates on all rows will be sent using update2
> > notifications. In this case a client will not be able to open a
monitor
> > session and expect no updates at all like written in the usage above.
> >
>
> This seems natural.
>
> If no updates are expected at the beginning, could we come up with a
> where condition that
> will not generate any updates? Like "where false".
>
It can work if we can define "where" to be an array of <condition> and
boolean values. For example: "where" : [false, <condition>*]. Since the
monitor_cond will monitor any row that match at least one of the
conditions, if we will have "where" : [false] no row will be monitored.
However it seems little awkward to me.
Maybe we should define a new member called "conditional" : boolean that
will indicate if we need to refer to conditions.
What do you think?
More information about the dev
mailing list