[Kimchi-devel] [PATCH] [WoK] Asynchronous UI notification implementation
Aline Manera
alinefm at linux.vnet.ibm.com
Tue Feb 28 14:16:42 UTC 2017
+1
On 02/28/2017 11:12 AM, Daniel Henrique Barboza wrote:
> Just realized studying the code that, perhaps, the websockify token
> considers
> only the file name, not the file path. This could mean that we can choose
> the dir of the unix socket freely, as long as the canonical name stays
> the same. So /run/woknotifications and /run/user/<u-id>/woknotifications
> would be accessed by the same URL. I'll investigate and see if it's true.
>
> Let me summarize here what I am planning for v2 reading all the replies:
>
> - Change the socket dir with as little backend changes as possible.
> Assess if
> maintaining the same file name allows for the same token (URI) in the UI,
> avoiding using another API to deliver the token;
>
> - Change the push server initialization. Move it to server.py to avoid
> execution
> in the unit tests, but allow execution in the test mode. Do the same
> treatment
> with the ws_proxy initialization;
>
> - Simplify the UI code. I think there's a way to get rid of the
> listener identifier
> without losing functionality;
>
> - Insert notifications in base model level. Put code in base WoK
> classes to allow notifications
> for every model event without the need of adding it manually;
>
> - Standardization of messages sent. Send messages in the pattern
> plugin/entity/action;
>
> - Minor code fixes (imports, remove kimchi references, etc).
>
>
> Let me know if I am missing something.
>
>
> Daniel
>
>
> On 02/28/2017 10:27 AM, Aline Manera wrote:
>>
>>
>> On 02/28/2017 10:02 AM, Lucio Correia wrote:
>>> On 27/02/2017 18:30, Daniel Henrique Barboza wrote:
>>>>
>>>>
>>>> On 02/27/2017 06:18 PM, Lucio Correia wrote:
>>>>> On 27/02/2017 18:12, Daniel Henrique Barboza wrote:
>>>>>>>>> +BASE_DIRECTORY = '/run'
>>>>>>>> Suggestion to use:
>>>>>>>> os.path.join('/run/user', str(os.getuid()))
>>>>>>>> in order tests may be run with root.
>>>>>>
>>>>>> I would prefer to choose a path that can be written by anyone
>>>>>> else to
>>>>>> allow the push_server
>>>>>> to be started without root.
>>>>>
>>>>> Sorry, I meant *without* root.
>>>>> /run/user/<UID> allows for that, it's writable by the user that
>>>>> started wokd, be it root or not.
>>>>>
>>>> This change would require further UI changes to allow the /config API
>>>> (or other) to inform
>>>> the UI of the current websocket URL. This will not solve the problems
>>>> I've seen with the unit tests
>>>> though - multiple instances of the push_server will not be possible
>>>> and
>>>> the unit tests will
>>>> break.
>>>
>>> I'm not seeing the relation between that BASE_DIR and the URL used
>>> by UI. Anyway, I believe we both agree that just one server and one
>>> URL is fine.
>>>
>>> My only concern is the directory to save that woknotifications file
>>> and the permissions required for it.
>>>
>>>
>>
>> If the websockets directory path would be returned by a function in
>> config.py (for example) the tests may overwrite that to set a /tmp
>> dir and that way allowing it to run without root permissions.
>>
>> Daniel helped me to use @mock.patch and seems it can be a good way to
>> go to solve it.
>>
>>>>
>>>> We need to discuss an alternative where:
>>>>
>>>> - any user can start the push_server, as you require
>>>
>>> I'm not requiring it. Just saying that if it will be started by
>>> tests, it needs to run without sudo (i.e. use paths in filesystems
>>> that allow for that).
>>>
>>> As I mentioned earlier, testing for 'test' option is not enough to
>>> avoid PushServer to be started during tests, since as of now 'test'
>>> option only governs which model will be used.
>>>
>>>
>>>>
>>>> - if we're to allow the push_server to be run in test_mode*, we
>>>> need to
>>>> think in a way of
>>>> generating random paths that can be written by any user as well.
>>>> You are
>>>> working closely
>>>> in Debian changes. What system dir can be used that can be written by
>>>> any user and,
>>>> preferably, exists in RPM distros too?
>>>
>>> On Fedora 25, /run/user/<UID>/libvirt is the default dir used to
>>> store runtime data by libvirt when it is started with
>>> "qemu:///session" url (regular user session).
>>>
>>> In fact it seems to be default place for that kind of usage in both
>>> distros:
>>>
>>> Ubuntu 16.04:
>>> $ ls /run/user/1000/
>>> dbus-session gnome-shell gvfs-burn pulse systemd
>>> upstart-dbus-bridge.4451.pid upstart-udev-bridge.2946.pid
>>> dconf gvfs keyring speech-dispatcher upstart
>>> upstart-file-bridge.4451.pid upstart-udev-bridge.4451.pid
>>>
>>> Fedora 25:
>>> $ ls /run/user/1000/
>>> bus libvirt systemd
>>>
>>>
>>
>> _______________________________________________
>> Kimchi-devel mailing list
>> Kimchi-devel at ovirt.org
>> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>
More information about the Kimchi-devel
mailing list