[openstack-dev] [Fuel] Overriding and removing VIPs from plugins

Igor Kalnitsky ikalnitsky at mirantis.com
Fri Jan 29 15:10:50 UTC 2016


Roman P. wrote:
> Putting extra checks will create a more fool-proof but less configurable
> software. I’d vote for letting users shoot their feet using their plugins
> but making Fuel more flexible.

I won't agree here. You see, what if two plugins wants to override the
core network role? Consider that plugin A wants to extend VIPs:

    id: "mgmt/vip"
    default_mapping: "management"
    properties:
      vip:
        - name: "management"
          namespace: "haproxy"
        # new VIP we want to add
        - name: "myvip"
          namespace: "haproxy"

while plugin B wants to remove them:

    id: "mgmt/vip"
    default_mapping: "management"
    properties:
      vip: []

How do you suppose to resolve this action? We don't know in which
order they will be resolved, and I'm strongly against unpredictable
situation (especiall it may be different time-to-time and depends on
which order plugins will be selected).

Moreover, it makes a little sense to try to resolve this situation. If
two plugins change something in core, they are probably incompatible.
Manual actions are required.

So that's, basically, why I think we should warn user about
incompatible changes to core stuff. Just like we do for deployment
tasks.

- igor

On Fri, Jan 29, 2016 at 4:18 PM, Roman Prykhodchenko <me at romcheg.me> wrote:
> I would not check that. We are not talking about installing browser plugins
> when users may not know what they want. Putting extra checks will create a
> more fool-proof but less configurable software. I’d vote for letting users
> shoot their feet using their plugins but making Fuel more flexible.
>
>
> 29 січ. 2016 р. о 15:05 Aleksey Kasatkin <akasatkin at mirantis.com>
> написав(ла):
>
>> jsonpatch
>
> There were +1's regarding overriding VIPs above. I'd stick with that. It is
> done for tasks now. But we will need to check conflicts between plugins
> there (as for tasks).
>
>
> Aleksey Kasatkin
>
>
> On Fri, Jan 29, 2016 at 1:23 PM, Roman Prykhodchenko <me at romcheg.me> wrote:
>>
>> Frankly, I have not though about how to deal with multiple plugins yet.
>> However, what I think is that we must not restrict this too much and let
>> users configure it more flexibly even if it allows to shoot one’s foot.
>> Perhaps we can add a per-cluster priority for enabled plugins which users
>> can configure via UI, CLI or API. My other thought is that we should not
>> invent our own mechanics for changing a configuration and use an existing
>> one, say, jsonpatch. What do you guys think?
>>
>> P. S. [0] is really needed for 8.0 for implementing an important epic, so
>> please check it out. If it does not break anything, lets merge it ASAP.
>>
>> - romcheg
>>
>> 28 січ. 2016 р. о 18:30 Aleksey Kasatkin <akasatkin at mirantis.com>
>> написав(ла):
>>
>> AFAIC, it is better to remove by name then. Otherwise, you do not know
>> what VIPs you are removing.
>> Another option - remove "built-in" VIPs using some specific expression.
>> Anyway, you do not know where other VIPs (VIPs of other plugins) live so
>> you cannot remove them this way.
>>
>> And the order of plugins processing is not defined so there is no warranty
>> you will remove all VIPs on those network roles.
>> Seems, checking for such conflict between plugins is needed.
>>
>> The original goal, actually, was to remove VIPs for controllers (or for
>> some particular node role, maybe),
>> so we should maybe find a way to do exactly this.
>>
>>
>>
>> Aleksey Kasatkin
>>
>>
>> On Thu, Jan 28, 2016 at 6:28 PM, Aleksandr Didenko <adidenko at mirantis.com>
>> wrote:
>>>
>>> > How are we handling this now for multiple plugins?
>>>
>>> OK, so right now we can only add VIPs to array, we can't remove them. So
>>> overriding would disable such possibility of adding VIPs from different
>>> plugins. But with [0] patch it will be still possible to add and to remove
>>> by providing empty array. But we'll have the problem with multiple plugins
>>> in such case.
>>> I've changed my mind :) I vote for leaving as in [0] since it's less
>>> destructive comparing to what we have now.
>>>
>>> Regards,
>>> Alex
>>>
>>> [0] https://review.openstack.org/#/c/273169/1
>>>
>>> On Thu, Jan 28, 2016 at 5:23 PM, Aleksandr Didenko
>>> <adidenko at mirantis.com> wrote:
>>>>
>>>> Well, with merging instead of overriding, I believe, this problem with
>>>> multiple plugins still exists, right? How are we handling this now for
>>>> multiple plugins?
>>>> Since VIPs is array I also vote for overriding, since merging it could
>>>> be a pain (how do you remove existing element during array merge?).
>>>>
>>>> On Thu, Jan 28, 2016 at 5:00 PM, Aleksey Kasatkin
>>>> <akasatkin at mirantis.com> wrote:
>>>>>
>>>>> Roman, please provide more details on how VIPs are overridden. And how
>>>>> do you deal with multiple plugins.
>>>>>
>>>>>
>>>>> Aleksey Kasatkin
>>>>>
>>>>>
>>>>> On Thu, Jan 28, 2016 at 5:58 PM, Aleksey Kasatkin
>>>>> <akasatkin at mirantis.com> wrote:
>>>>>>
>>>>>> Good idea, overally.
>>>>>>
>>>>>> How about multiple plugins? We don't have any sequence or priorities
>>>>>> between them.
>>>>>> What if one plugin assumes that VIP is present but other one wants to
>>>>>> remove it?
>>>>>>
>>>>>>
>>>>>> Aleksey Kasatkin
>>>>>>
>>>>>>
>>>>>> On Thu, Jan 28, 2016 at 4:02 PM, Sergii Golovatiuk
>>>>>> <sgolovatiuk at mirantis.com> wrote:
>>>>>>>
>>>>>>> +1 to overriding VIPs
>>>>>>>
>>>>>>> --
>>>>>>> Best regards,
>>>>>>> Sergii Golovatiuk,
>>>>>>> Skype #golserge
>>>>>>> IRC #holser
>>>>>>>
>>>>>>> On Thu, Jan 28, 2016 at 12:04 PM, Vladimir Kuklin
>>>>>>> <vkuklin at mirantis.com> wrote:
>>>>>>>>
>>>>>>>> +1 to overriding VIPs
>>>>>>>>
>>>>>>>> On Thu, Jan 28, 2016 at 1:43 PM, Roman Prykhodchenko <me at romcheg.me>
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>> Folks,
>>>>>>>>>
>>>>>>>>> currently merge policy for network roles only allows to add new
>>>>>>>>> VIPs to already existing roles [1]. If a plugin supplies a VIP with a name
>>>>>>>>> that already exists but with different parameters, Nailgun will not allow to
>>>>>>>>> do that. We faced a need to override configuration of several VIPs by
>>>>>>>>> completely removing them from network roles by supplying something like [2].
>>>>>>>>> To enable that I’ve made a temporary workaround [3] to the merging policy
>>>>>>>>> that only handles one cornerstone.
>>>>>>>>>
>>>>>>>>> I’ve talked to ikalnitsky and we realized that this functionality
>>>>>>>>> of merging new VIPs from plugins to an existing network role is actually
>>>>>>>>> wrong and should be replaced by complete overriding. Let’s discuss this
>>>>>>>>> possibility here.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> References:
>>>>>>>>>
>>>>>>>>> 1.
>>>>>>>>> https://github.com/openstack/fuel-web/blob/master/nailgun/nailgun/policy/merge.py#L55
>>>>>>>>> 2. http://xsnippet.org/361361/
>>>>>>>>> 3. https://review.openstack.org/#/c/273169/1
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> - romcheg
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> __________________________________________________________________________
>>>>>>>>> OpenStack Development Mailing List (not for usage questions)
>>>>>>>>> Unsubscribe:
>>>>>>>>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>>>>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Yours Faithfully,
>>>>>>>> Vladimir Kuklin,
>>>>>>>> Fuel Library Tech Lead,
>>>>>>>> Mirantis, Inc.
>>>>>>>> +7 (495) 640-49-04
>>>>>>>> +7 (926) 702-39-68
>>>>>>>> Skype kuklinvv
>>>>>>>> 35bk3, Vorontsovskaya Str.
>>>>>>>> Moscow, Russia,
>>>>>>>> www.mirantis.com
>>>>>>>> www.mirantis.ru
>>>>>>>> vkuklin at mirantis.com
>>>>>>>>
>>>>>>>>
>>>>>>>> __________________________________________________________________________
>>>>>>>> OpenStack Development Mailing List (not for usage questions)
>>>>>>>> Unsubscribe:
>>>>>>>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>>>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> __________________________________________________________________________
>>>>>>> OpenStack Development Mailing List (not for usage questions)
>>>>>>> Unsubscribe:
>>>>>>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> __________________________________________________________________________
>>>>> OpenStack Development Mailing List (not for usage questions)
>>>>> Unsubscribe:
>>>>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>>>
>>>>
>>>
>>>
>>>
>>> __________________________________________________________________________
>>> OpenStack Development Mailing List (not for usage questions)
>>> Unsubscribe:
>>> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>>
>>
>> __________________________________________________________________________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>>
>>
>> __________________________________________________________________________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
>
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>



More information about the OpenStack-dev mailing list