[RFC] [Wok] Feature: User Activity Log

User Activity Log functionality ------------------------------- Host admin wants to have access to all actions performed by Wok users, either through API, web user interface, with the option to download User Acitivity Log in a text file. REST API -------- Only one API will be exposed: - GET /logs - Collection of log entries for all installed plugins. Examples of filtering: /logs?plugin=kimchi - All log entries for Kimchi plugin /logs?user=admin - All log entries from admin user /logs?request=PUT - All log entries relative to PUT requests /logs?date=20160110 - All Jan 10th's log entries Backend design -------------- - Define activity texts for each currently implemented activity of all plugins - Implement method to retrieve the activity texts in Wok and all plugins - Log events to a JSON file in the host file system. Each user request received by Wok will generate an entry in the respective log file. Fields to be saved for each entry: plugin, datetime, user, request type (PUT, POST, GET, DELETE), activity text (i.e. "create guest 'vm-sample'") - Implement code for retrieving and filtering log events by the fields above Web User interface design ------------------------- Create a new tab: "User Activity" - available only to Wok admins - Search fields to filter log events by installed plugin, date, user, and/or request type - Show search results in a table containing plugin, datetime, user, request type, activity text - User may sort the table by plugin, datetime, user or request type - Button for downloading current search results as a txt file -- Lucio Correia Software Engineer IBM LTC Brazil

Hi, How many logs do you think the page should display? Should we use pagination? I think since Ginger already included jQuery Boogrid in Wok maybe we can use this library however... -The search/filter will look for any word typed by the user. I mean, the filter function will look up for any string in a row, we can't put a button to "Search by date" or "search by request", if the user types a date, it will filter this date. If the user filter "Kimchi" and there's a user named "kimchiuser", the log will show all records starting with "kimchi" and will display all actions done in Kimchi plugin and actions in other plugins done by kimchiuser. Here's an example that uses selection and includes filter, sorting and pagination: http://www.jquery-bootgrid.com/Examples#selection My only concern is that this datatable is slightly different than the other tables that we use in Kimchi and Ginger. I think we can customize it with CSS to look like wok.datagrid() widget. If we have to add pagination, then we'll use jQuery Bootgrid. If we don't need to page the records, then we'll use wok.datagrid(). Samuel -----Original Message----- From: kimchi-devel-bounces@ovirt.org [mailto:kimchi-devel-bounces@ovirt.org] On Behalf Of Lucio Correia Sent: sexta-feira, 5 de fevereiro de 2016 18:52 To: Kimchi Devel <kimchi-devel@ovirt.org> Subject: [Kimchi-devel] [RFC] [Wok] Feature: User Activity Log User Activity Log functionality ------------------------------- Host admin wants to have access to all actions performed by Wok users, either through API, web user interface, with the option to download User Acitivity Log in a text file. REST API -------- Only one API will be exposed: - GET /logs - Collection of log entries for all installed plugins. Examples of filtering: /logs?plugin=kimchi - All log entries for Kimchi plugin /logs?user=admin - All log entries from admin user /logs?request=PUT - All log entries relative to PUT requests /logs?date=20160110 - All Jan 10th's log entries Backend design -------------- - Define activity texts for each currently implemented activity of all plugins - Implement method to retrieve the activity texts in Wok and all plugins - Log events to a JSON file in the host file system. Each user request received by Wok will generate an entry in the respective log file. Fields to be saved for each entry: plugin, datetime, user, request type (PUT, POST, GET, DELETE), activity text (i.e. "create guest 'vm-sample'") - Implement code for retrieving and filtering log events by the fields above Web User interface design ------------------------- Create a new tab: "User Activity" - available only to Wok admins - Search fields to filter log events by installed plugin, date, user, and/or request type - Show search results in a table containing plugin, datetime, user, request type, activity text - User may sort the table by plugin, datetime, user or request type - Button for downloading current search results as a txt file -- Lucio Correia Software Engineer IBM LTC Brazil _______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel

On 08-02-2016 15:01, Samuel Henrique De Oliveira Guimaraes wrote:
Hi, Hello,
How many logs do you think the page should display? Should we use pagination? I think since Ginger already included jQuery Boogrid in Wok maybe we can use this library however... -The search/filter will look for any word typed by the user. I mean, the filter function will look up for any string in a row, we can't put a button to "Search by date" or "search by request", if the user types a date, it will filter this date. If the user filter "Kimchi" and there's a user named "kimchiuser", the log will show all records starting with "kimchi" and will display all actions done in Kimchi plugin and actions in other plugins done by kimchiuser.
The amount of logs can be defined later, based on what fits better our UI design. Pagination is essential in my opinion. I liked the filter function and think it works well for the Web UI. Since it will result in different possibilities of searches/results when compared to the REST API, my concern is regarding saving the logs. Would it be possible to generate a txt file for the user to save the logs for what she is seeing? Perhaps we need to provide a specific backend API for that...
Here's an example that uses selection and includes filter, sorting and pagination: http://www.jquery-bootgrid.com/Examples#selection
My only concern is that this datatable is slightly different than the other tables that we use in Kimchi and Ginger. I think we can customize it with CSS to look like wok.datagrid() widget. If we have to add pagination, then we'll use jQuery Bootgrid. If we don't need to page the records, then we'll use wok.datagrid().
Samuel

On 02/08/2016 04:36 PM, Lucio Correia wrote:
On 08-02-2016 15:01, Samuel Henrique De Oliveira Guimaraes wrote:
Hi, Hello,
How many logs do you think the page should display? Should we use pagination? I think since Ginger already included jQuery Boogrid in Wok maybe we can use this library however... -The search/filter will look for any word typed by the user. I mean, the filter function will look up for any string in a row, we can't put a button to "Search by date" or "search by request", if the user types a date, it will filter this date. If the user filter "Kimchi" and there's a user named "kimchiuser", the log will show all records starting with "kimchi" and will display all actions done in Kimchi plugin and actions in other plugins done by kimchiuser.
The amount of logs can be defined later, based on what fits better our UI design. Pagination is essential in my opinion.
I liked the filter function and think it works well for the Web UI. Since it will result in different possibilities of searches/results when compared to the REST API, my concern is regarding saving the logs. Would it be possible to generate a txt file for the user to save the logs for what she is seeing? Perhaps we need to provide a specific backend API for that...
We don't need to request all the logs entries at once to populate the UI. In fact, it would cause performance issues as it is a web server receiving multiple requests by different users at the same time which will generate a huge amount of logs. IMO we should display only the entries for the current day and allow user do a advanced search, ie, by specific date, plugin, user, etc. So for the logs already displayed, the filtering option you suggested will work well. But the advanced search is essential.
Here's an example that uses selection and includes filter, sorting and pagination: http://www.jquery-bootgrid.com/Examples#selection
My only concern is that this datatable is slightly different than the other tables that we use in Kimchi and Ginger. I think we can customize it with CSS to look like wok.datagrid() widget. If we have to add pagination, then we'll use jQuery Bootgrid. If we don't need to page the records, then we'll use wok.datagrid().
Samuel
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel

I think jQuery Bootgrid Data API example covers the performance and requests issues: http://www.jquery-bootgrid.com/Examples#data-api However for the search options it is not very easy to edit the markup or behavior. The library provides some styling options but I'm not sure if we can just hide the default search/filter bar and create custom search options (combining "date" and "user" for instance). According to the documentation the search function "Searches in all visible columns for the given phrase. If no argument is passed, it will reset the search. This method is chainable". We can transform the data based on a custom advanced search and then destroy/reload jQuery Bootgrid table but it would reset pagination and it would probably break the default search method. Samuel -----Original Message----- From: Aline Manera [mailto:alinefm@linux.vnet.ibm.com] Sent: quarta-feira, 10 de fevereiro de 2016 12:47 To: luciojhc@linux.vnet.ibm.com; Samuel Henrique De Oliveira Guimaraes <samuel.guimaraes@eldorado.org.br>; Kimchi Devel <kimchi-devel@ovirt.org> Subject: Re: [Kimchi-devel] [RFC] [Wok] Feature: User Activity Log On 02/08/2016 04:36 PM, Lucio Correia wrote:
On 08-02-2016 15:01, Samuel Henrique De Oliveira Guimaraes wrote:
Hi, Hello,
How many logs do you think the page should display? Should we use pagination? I think since Ginger already included jQuery Boogrid in Wok maybe we can use this library however... -The search/filter will look for any word typed by the user. I mean, the filter function will look up for any string in a row, we can't put a button to "Search by date" or "search by request", if the user types a date, it will filter this date. If the user filter "Kimchi" and there's a user named "kimchiuser", the log will show all records starting with "kimchi" and will display all actions done in Kimchi plugin and actions in other plugins done by kimchiuser.
The amount of logs can be defined later, based on what fits better our UI design. Pagination is essential in my opinion.
I liked the filter function and think it works well for the Web UI. Since it will result in different possibilities of searches/results when compared to the REST API, my concern is regarding saving the logs. Would it be possible to generate a txt file for the user to save the logs for what she is seeing? Perhaps we need to provide a specific backend API for that...
We don't need to request all the logs entries at once to populate the UI. In fact, it would cause performance issues as it is a web server receiving multiple requests by different users at the same time which will generate a huge amount of logs. IMO we should display only the entries for the current day and allow user do a advanced search, ie, by specific date, plugin, user, etc. So for the logs already displayed, the filtering option you suggested will work well. But the advanced search is essential.
Here's an example that uses selection and includes filter, sorting and pagination: http://www.jquery-bootgrid.com/Examples#selection
My only concern is that this datatable is slightly different than the other tables that we use in Kimchi and Ginger. I think we can customize it with CSS to look like wok.datagrid() widget. If we have to add pagination, then we'll use jQuery Bootgrid. If we don't need to page the records, then we'll use wok.datagrid().
Samuel
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel

On 11-02-2016 08:01, Samuel Henrique De Oliveira Guimaraes wrote:
I think jQuery Bootgrid Data API example covers the performance and requests issues: http://www.jquery-bootgrid.com/Examples#data-api
However for the search options it is not very easy to edit the markup or behavior. The library provides some styling options but I'm not sure if we can just hide the default search/filter bar and create custom search options (combining "date" and "user" for instance). According to the documentation the search function "Searches in all visible columns for the given phrase. If no argument is passed, it will reset the search. This method is chainable". We can transform the data based on a custom advanced search and then destroy/reload jQuery Bootgrid table but it would reset pagination and it would probably break the default search method.
Samuel
I believe we need to separate here between search and filter. Search will be through REST API, and will return a set of entries as a result. Aline's concern with performance is here. Filter will be applied to that result returned by search. In my opinion Samuel is referring to filtering. So no need to combine attributes here, just filtering by text in any column. Search results are downloadable in a txt file. Filter results are not. Just making sure we are all in the same page. Thoughts? Regards, -- Lucio Correia Software Engineer IBM LTC Brazil

Exactly. Advanced search will shape the JSON data and then jQuery Bootgrid will reload and display the new results and handle row filtering and sorting. Samuel -----Original Message----- From: Lucio Correia [mailto:luciojhc@linux.vnet.ibm.com] Sent: quinta-feira, 11 de fevereiro de 2016 11:27 To: Samuel Henrique De Oliveira Guimaraes <samuel.guimaraes@eldorado.org.br>; Aline Manera <alinefm@linux.vnet.ibm.com>; Kimchi Devel <kimchi-devel@ovirt.org> Subject: Re: [Kimchi-devel] [RFC] [Wok] Feature: User Activity Log On 11-02-2016 08:01, Samuel Henrique De Oliveira Guimaraes wrote:
I think jQuery Bootgrid Data API example covers the performance and requests issues: http://www.jquery-bootgrid.com/Examples#data-api
However for the search options it is not very easy to edit the markup or behavior. The library provides some styling options but I'm not sure if we can just hide the default search/filter bar and create custom search options (combining "date" and "user" for instance). According to the documentation the search function "Searches in all visible columns for the given phrase. If no argument is passed, it will reset the search. This method is chainable". We can transform the data based on a custom advanced search and then destroy/reload jQuery Bootgrid table but it would reset pagination and it would probably break the default search method.
Samuel
I believe we need to separate here between search and filter. Search will be through REST API, and will return a set of entries as a result. Aline's concern with performance is here. Filter will be applied to that result returned by search. In my opinion Samuel is referring to filtering. So no need to combine attributes here, just filtering by text in any column. Search results are downloadable in a txt file. Filter results are not. Just making sure we are all in the same page. Thoughts? Regards, -- Lucio Correia Software Engineer IBM LTC Brazil

Thanks, Lucio to clarify it! I also think we were talking on different scenarios. We can have all the log content display in a table format with filter and search options. Example: \/ Logs (It can be a collapsed area - similar to what we have on Ginger) | <filter input box> | | <advanced search button/link> | | <logs in a table format> | When using the <filter input box>, it will filter the content in the log table. For the <advanced search button/link>, it can open a new dialog with the input boxes for the new search (a request to be sent to the server) or expand the same content: | <filter input box> | | *+**/-* <advanced search button/link> | | Plugin: <input box> User: <input box> | | Date: <date input box> ... | | | Search <button>| The search option will send a new request to the server and update the log table with the new content. Does that make sense? Regards, Aline Manera On 02/11/2016 12:31 PM, Samuel Henrique De Oliveira Guimaraes wrote:
Exactly. Advanced search will shape the JSON data and then jQuery Bootgrid will reload and display the new results and handle row filtering and sorting.
Samuel
-----Original Message----- From: Lucio Correia [mailto:luciojhc@linux.vnet.ibm.com] Sent: quinta-feira, 11 de fevereiro de 2016 11:27 To: Samuel Henrique De Oliveira Guimaraes <samuel.guimaraes@eldorado.org.br>; Aline Manera <alinefm@linux.vnet.ibm.com>; Kimchi Devel <kimchi-devel@ovirt.org> Subject: Re: [Kimchi-devel] [RFC] [Wok] Feature: User Activity Log
On 11-02-2016 08:01, Samuel Henrique De Oliveira Guimaraes wrote:
I think jQuery Bootgrid Data API example covers the performance and requests issues: http://www.jquery-bootgrid.com/Examples#data-api
However for the search options it is not very easy to edit the markup or behavior. The library provides some styling options but I'm not sure if we can just hide the default search/filter bar and create custom search options (combining "date" and "user" for instance). According to the documentation the search function "Searches in all visible columns for the given phrase. If no argument is passed, it will reset the search. This method is chainable". We can transform the data based on a custom advanced search and then destroy/reload jQuery Bootgrid table but it would reset pagination and it would probably break the default search method.
Samuel I believe we need to separate here between search and filter.
Search will be through REST API, and will return a set of entries as a result. Aline's concern with performance is here.
Filter will be applied to that result returned by search. In my opinion Samuel is referring to filtering. So no need to combine attributes here, just filtering by text in any column.
Search results are downloadable in a txt file. Filter results are not.
Just making sure we are all in the same page.
Thoughts?
Regards, -- Lucio Correia Software Engineer IBM LTC Brazil

Will it be possible to create more complex queries such as ?plugin=kimchi&user=root and time frames ?plugin=kimchi&from=20160101&to=20160105 On 05-02-2016 18:51, Lucio Correia wrote:
User Activity Log functionality ------------------------------- Host admin wants to have access to all actions performed by Wok users, either through API, web user interface, with the option to download User Acitivity Log in a text file.
REST API -------- Only one API will be exposed: - GET /logs - Collection of log entries for all installed plugins. Examples of filtering: /logs?plugin=kimchi - All log entries for Kimchi plugin /logs?user=admin - All log entries from admin user /logs?request=PUT - All log entries relative to PUT requests /logs?date=20160110 - All Jan 10th's log entries
Backend design -------------- - Define activity texts for each currently implemented activity of all plugins - Implement method to retrieve the activity texts in Wok and all plugins - Log events to a JSON file in the host file system. Each user request received by Wok will generate an entry in the respective log file. Fields to be saved for each entry: plugin, datetime, user, request type (PUT, POST, GET, DELETE), activity text (i.e. "create guest 'vm-sample'") - Implement code for retrieving and filtering log events by the fields above
Web User interface design ------------------------- Create a new tab: "User Activity" - available only to Wok admins - Search fields to filter log events by installed plugin, date, user, and/or request type - Show search results in a table containing plugin, datetime, user, request type, activity text - User may sort the table by plugin, datetime, user or request type - Button for downloading current search results as a txt file
-- Jose Ricardo Ziviani ----------------------------- Software Engineer Linux Technology Center - IBM

On 08-02-2016 15:25, Jose Ricardo Ziviani wrote:
Will it be possible to create more complex queries such as ?plugin=kimchi&user=root Yes, definitively.
and time frames
?plugin=kimchi&from=20160101&to=20160105 This was not considered in original RFC. I don't think of it as an essential feature for this first version. Let's hear from others to see more opinions.
On 05-02-2016 18:51, Lucio Correia wrote:
User Activity Log functionality ------------------------------- Host admin wants to have access to all actions performed by Wok users, either through API, web user interface, with the option to download User Acitivity Log in a text file.
REST API -------- Only one API will be exposed: - GET /logs - Collection of log entries for all installed plugins. Examples of filtering: /logs?plugin=kimchi - All log entries for Kimchi plugin /logs?user=admin - All log entries from admin user /logs?request=PUT - All log entries relative to PUT requests /logs?date=20160110 - All Jan 10th's log entries
Backend design -------------- - Define activity texts for each currently implemented activity of all plugins - Implement method to retrieve the activity texts in Wok and all plugins - Log events to a JSON file in the host file system. Each user request received by Wok will generate an entry in the respective log file. Fields to be saved for each entry: plugin, datetime, user, request type (PUT, POST, GET, DELETE), activity text (i.e. "create guest 'vm-sample'") - Implement code for retrieving and filtering log events by the fields above
Web User interface design ------------------------- Create a new tab: "User Activity" - available only to Wok admins - Search fields to filter log events by installed plugin, date, user, and/or request type - Show search results in a table containing plugin, datetime, user, request type, activity text - User may sort the table by plugin, datetime, user or request type - Button for downloading current search results as a txt file
-- Lucio Correia Software Engineer IBM LTC Brazil

On 02/08/2016 04:46 PM, Lucio Correia wrote:
On 08-02-2016 15:25, Jose Ricardo Ziviani wrote:
Will it be possible to create more complex queries such as ?plugin=kimchi&user=root Yes, definitively.
and time frames
?plugin=kimchi&from=20160101&to=20160105 This was not considered in original RFC. I don't think of it as an essential feature for this first version. Let's hear from others to see more opinions.
+1 for this. But I agree we can work on it as an improvement after getting the first version of this feature upstream.
On 05-02-2016 18:51, Lucio Correia wrote:
User Activity Log functionality ------------------------------- Host admin wants to have access to all actions performed by Wok users, either through API, web user interface, with the option to download User Acitivity Log in a text file.
REST API -------- Only one API will be exposed: - GET /logs - Collection of log entries for all installed plugins. Examples of filtering: /logs?plugin=kimchi - All log entries for Kimchi plugin /logs?user=admin - All log entries from admin user /logs?request=PUT - All log entries relative to PUT requests /logs?date=20160110 - All Jan 10th's log entries
Backend design -------------- - Define activity texts for each currently implemented activity of all plugins - Implement method to retrieve the activity texts in Wok and all plugins - Log events to a JSON file in the host file system. Each user request received by Wok will generate an entry in the respective log file. Fields to be saved for each entry: plugin, datetime, user, request type (PUT, POST, GET, DELETE), activity text (i.e. "create guest 'vm-sample'") - Implement code for retrieving and filtering log events by the fields above
Web User interface design ------------------------- Create a new tab: "User Activity" - available only to Wok admins - Search fields to filter log events by installed plugin, date, user, and/or request type - Show search results in a table containing plugin, datetime, user, request type, activity text - User may sort the table by plugin, datetime, user or request type - Button for downloading current search results as a txt file

On 02/05/2016 06:51 PM, Lucio Correia wrote:
User Activity Log functionality ------------------------------- Host admin wants to have access to all actions performed by Wok users, either through API, web user interface, with the option to download User Acitivity Log in a text file.
REST API -------- Only one API will be exposed: - GET /logs - Collection of log entries for all installed plugins. Examples of filtering: /logs?plugin=kimchi - All log entries for Kimchi plugin /logs?user=admin - All log entries from admin user /logs?request=PUT - All log entries relative to PUT requests /logs?date=20160110 - All Jan 10th's log entries
Backend design -------------- - Define activity texts for each currently implemented activity of all plugins - Implement method to retrieve the activity texts in Wok and all plugins - Log events to a JSON file in the host file system. Each user request received by Wok will generate an entry in the respective log file. Fields to be saved for each entry: plugin, datetime, user, request type (PUT, POST, GET, DELETE), activity text (i.e. "create guest 'vm-sample'") - Implement code for retrieving and filtering log events by the fields above
Web User interface design ------------------------- Create a new tab: "User Activity" - available only to Wok admins
I'd suggest to create a tab for Wok and name it as "Wok configuration" or something like that. As in future, we have plans to add more features to this tab, such as user authorization, authentication method, enable/disable plugins, etc. So, in that case, the 'User log activity" would be one of the sections in this tab. We can follow what Ginger does with the expanded/collapsed areas.
- Search fields to filter log events by installed plugin, date, user, and/or request type - Show search results in a table containing plugin, datetime, user, request type, activity text - User may sort the table by plugin, datetime, user or request type - Button for downloading current search results as a txt file

This is a great new feature: +1 I have one question on the backend side section. On 10.02.2016 15:36, Aline Manera wrote:
On 02/05/2016 06:51 PM, Lucio Correia wrote:
User Activity Log functionality ------------------------------- Host admin wants to have access to all actions performed by Wok users, either through API, web user interface, with the option to download User Acitivity Log in a text file.
REST API -------- Only one API will be exposed: - GET /logs - Collection of log entries for all installed plugins. Examples of filtering: /logs?plugin=kimchi - All log entries for Kimchi plugin /logs?user=admin - All log entries from admin user /logs?request=PUT - All log entries relative to PUT requests /logs?date=20160110 - All Jan 10th's log entries
Backend design -------------- - Define activity texts for each currently implemented activity of all plugins - Implement method to retrieve the activity texts in Wok and all plugins - Log events to a JSON file in the host file system. Each user request received by Wok will generate an entry in the respective log file. Fields to be saved for each entry: plugin, datetime, user, request type (PUT, POST, GET, DELETE), activity text (i.e. "create guest 'vm-sample'") - Implement code for retrieving and filtering log events by the fields above
Are we planning with any archiving or wrap-around feature for the JSON file ? If we are simply accumulating the entries in the same file, I'm concerned that at a certain point we may end with a huge file and run into performance issues. As a start we could define a simple wrap-around mechanism and leave the responsibilty for archiving to the administrator.
Web User interface design ------------------------- Create a new tab: "User Activity" - available only to Wok admins
I'd suggest to create a tab for Wok and name it as "Wok configuration" or something like that.
As in future, we have plans to add more features to this tab, such as user authorization, authentication method, enable/disable plugins, etc. So, in that case, the 'User log activity" would be one of the sections in this tab.
We can follow what Ginger does with the expanded/collapsed areas.
- Search fields to filter log events by installed plugin, date, user, and/or request type - Show search results in a table containing plugin, datetime, user, request type, activity text - User may sort the table by plugin, datetime, user or request type - Button for downloading current search results as a txt file
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel

On 10-02-2016 13:58, Walter Niklaus wrote:
This is a great new feature: +1
I have one question on the backend side section.
On 10.02.2016 15:36, Aline Manera wrote: ...
Backend design -------------- - Define activity texts for each currently implemented activity of all plugins - Implement method to retrieve the activity texts in Wok and all plugins - Log events to a JSON file in the host file system. Each user request received by Wok will generate an entry in the respective log file. Fields to be saved for each entry: plugin, datetime, user, request type (PUT, POST, GET, DELETE), activity text (i.e. "create guest 'vm-sample'") - Implement code for retrieving and filtering log events by the fields above
Are we planning with any archiving or wrap-around feature for the JSON file ? If we are simply accumulating the entries in the same file, I'm concerned that at a certain point we may end with a huge file and run into performance issues. As a start we could define a simple wrap-around mechanism and leave the responsibilty for archiving to the administrator.
The plan is to have file size limit and log rotation. There are some logging facilities in Python which allow for that. -- Lucio Correia Software Engineer IBM LTC Brazil

Hi team, I've created two wireframes for the User Activity Log. One features the default jQuery Bootgrid with inline filter (I've changed the label to "filter" to match other screens and make it easier for the user to distinguish filter from search) and another one features the collapsed Advanced Search panel. For now I have used default text input fields but I believe we can change Requests and Plugins for select inputs (using Selectpicker). We can also use Typeahead.js when user starts typing the usernames and a Datepicker for Date. I was thinking for the Date column maybe we could use a date range instead of a single date search. In this case we would have another column in Advanced Search with another datepicker input (From - To approach). BTW, if User Activity Log screen will be a part of Wok, then what should the navbar look like when this page is active? Should we hide the navbar? Create another first-level element for this page? Display it next to User and Help drop-downs? Regards, Samuel -----Original Message----- From: kimchi-devel-bounces@ovirt.org [mailto:kimchi-devel-bounces@ovirt.org] On Behalf Of Lucio Correia Sent: quarta-feira, 10 de fevereiro de 2016 14:49 To: Walter Niklaus <niklaus@linux.vnet.ibm.com>; Aline Manera <alinefm@linux.vnet.ibm.com>; Kimchi Devel <kimchi-devel@ovirt.org> Subject: Re: [Kimchi-devel] [RFC] [Wok] Feature: User Activity Log On 10-02-2016 13:58, Walter Niklaus wrote:
This is a great new feature: +1
I have one question on the backend side section.
Backend design -------------- - Define activity texts for each currently implemented activity of all plugins - Implement method to retrieve the activity texts in Wok and all plugins - Log events to a JSON file in the host file system. Each user request received by Wok will generate an entry in the respective log file. Fields to be saved for each entry: plugin, datetime, user, request type (PUT, POST, GET, DELETE), activity text (i.e. "create guest 'vm-sample'") - Implement code for retrieving and filtering log events by the fields above
Are we planning with any archiving or wrap-around feature for the JSON file ? If we are simply accumulating the entries in the same file, I'm concerned that at a certain point we may end with a huge file and run into performance issues. As a start we could define a simple wrap-around mechanism and leave
On 10.02.2016 15:36, Aline Manera wrote: ... the responsibilty for archiving to the administrator.
The plan is to have file size limit and log rotation. There are some logging facilities in Python which allow for that. -- Lucio Correia Software Engineer IBM LTC Brazil _______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel

On 16-02-2016 11:22, Samuel Henrique De Oliveira Guimaraes wrote:
Hi team,
I've created two wireframes for the User Activity Log. One features the default jQuery Bootgrid with inline filter (I've changed the label to "filter" to match other screens and make it easier for the user to distinguish filter from search) and another one features the collapsed Advanced Search panel.
For now I have used default text input fields but I believe we can change Requests and Plugins for select inputs (using Selectpicker). We can also use Typeahead.js when user starts typing the usernames and a Datepicker for Date. I was thinking for the Date column maybe we could use a date range instead of a single date search. In this case we would have another column in Advanced Search with another datepicker input (From - To approach).
Very good. That's the general idea.
BTW, if User Activity Log screen will be a part of Wok, then what should the navbar look like when this page is active? Should we hide the navbar? Create another first-level element for this page? Display it next to User and Help drop-downs?
I vote for another first-level element 'Wok' (red color?) and tab 'Settings'. This way we keep the standard UI behavior. Notice it will only be showed to admin users. -- Lucio Correia Software Engineer IBM LTC Brazil

On 02/16/2016 02:43 PM, Lucio Correia wrote:
On 16-02-2016 11:22, Samuel Henrique De Oliveira Guimaraes wrote:
Hi team,
I've created two wireframes for the User Activity Log. One features the default jQuery Bootgrid with inline filter (I've changed the label to "filter" to match other screens and make it easier for the user to distinguish filter from search) and another one features the collapsed Advanced Search panel.
For now I have used default text input fields but I believe we can change Requests and Plugins for select inputs (using Selectpicker). We can also use Typeahead.js when user starts typing the usernames and a Datepicker for Date. I was thinking for the Date column maybe we could use a date range instead of a single date search. In this case we would have another column in Advanced Search with another datepicker input (From - To approach).
Very good. That's the general idea.
BTW, if User Activity Log screen will be a part of Wok, then what should the navbar look like when this page is active? Should we hide the navbar? Create another first-level element for this page? Display it next to User and Help drop-downs?
I vote for another first-level element 'Wok' (red color?) and tab 'Settings'. This way we keep the standard UI behavior.
Notice it will only be showed to admin users.
+1

On 16-02-2016 11:22, Samuel Henrique De Oliveira Guimaraes wrote:
Hi team,
I've created two wireframes for the User Activity Log. One features the default jQuery Bootgrid with inline filter (I've changed the label to "filter" to match other screens and make it easier for the user to distinguish filter from search) and another one features the collapsed Advanced Search panel.
BTW the download will be by search, not by entry. I.e. you download all search results in a log-formatted file. -- Lucio Correia Software Engineer IBM LTC Brazil

Hi Samuel, Thanks for the mockups! The "Advanced Search" should be displayed inside the "User Activity Log" element. + User Activity Log | Advanced Search | | Filter| The "Advanced Search" can continue to be an expanded area but move it inside the "User Activity Log". Does that make sense? Regards, Aline Manera On 02/16/2016 11:22 AM, Samuel Henrique De Oliveira Guimaraes wrote:
Hi team,
I've created two wireframes for the User Activity Log. One features the default jQuery Bootgrid with inline filter (I've changed the label to "filter" to match other screens and make it easier for the user to distinguish filter from search) and another one features the collapsed Advanced Search panel.
For now I have used default text input fields but I believe we can change Requests and Plugins for select inputs (using Selectpicker). We can also use Typeahead.js when user starts typing the usernames and a Datepicker for Date. I was thinking for the Date column maybe we could use a date range instead of a single date search. In this case we would have another column in Advanced Search with another datepicker input (From - To approach).
BTW, if User Activity Log screen will be a part of Wok, then what should the navbar look like when this page is active? Should we hide the navbar? Create another first-level element for this page? Display it next to User and Help drop-downs?
Regards, Samuel
-----Original Message----- From: kimchi-devel-bounces@ovirt.org [mailto:kimchi-devel-bounces@ovirt.org] On Behalf Of Lucio Correia Sent: quarta-feira, 10 de fevereiro de 2016 14:49 To: Walter Niklaus <niklaus@linux.vnet.ibm.com>; Aline Manera <alinefm@linux.vnet.ibm.com>; Kimchi Devel <kimchi-devel@ovirt.org> Subject: Re: [Kimchi-devel] [RFC] [Wok] Feature: User Activity Log
On 10-02-2016 13:58, Walter Niklaus wrote:
This is a great new feature: +1
I have one question on the backend side section.
Backend design -------------- - Define activity texts for each currently implemented activity of all plugins - Implement method to retrieve the activity texts in Wok and all plugins - Log events to a JSON file in the host file system. Each user request received by Wok will generate an entry in the respective log file. Fields to be saved for each entry: plugin, datetime, user, request type (PUT, POST, GET, DELETE), activity text (i.e. "create guest 'vm-sample'") - Implement code for retrieving and filtering log events by the fields above
Are we planning with any archiving or wrap-around feature for the JSON file ? If we are simply accumulating the entries in the same file, I'm concerned that at a certain point we may end with a huge file and run into performance issues. As a start we could define a simple wrap-around mechanism and leave
On 10.02.2016 15:36, Aline Manera wrote: ... the responsibilty for archiving to the administrator. The plan is to have file size limit and log rotation. There are some logging facilities in Python which allow for that.
-- Lucio Correia Software Engineer IBM LTC Brazil
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel

Yes, it does. What about the input fields for the advanced search? And the Download button, is the placement correct or should we put a button on the top? Samuel -----Original Message----- From: Aline Manera [mailto:alinefm@linux.vnet.ibm.com] Sent: quarta-feira, 17 de fevereiro de 2016 11:40 To: Samuel Henrique De Oliveira Guimaraes <samuel.guimaraes@eldorado.org.br>; luciojhc@linux.vnet.ibm.com; Walter Niklaus <niklaus@linux.vnet.ibm.com>; Kimchi Devel <kimchi-devel@ovirt.org> Subject: Re: [Kimchi-devel] [RFC] [Wok] Feature: User Activity Log Hi Samuel, Thanks for the mockups! The "Advanced Search" should be displayed inside the "User Activity Log" element. + User Activity Log | Advanced Search | | Filter| The "Advanced Search" can continue to be an expanded area but move it inside the "User Activity Log". Does that make sense? Regards, Aline Manera On 02/16/2016 11:22 AM, Samuel Henrique De Oliveira Guimaraes wrote:
Hi team,
I've created two wireframes for the User Activity Log. One features the default jQuery Bootgrid with inline filter (I've changed the label to "filter" to match other screens and make it easier for the user to distinguish filter from search) and another one features the collapsed Advanced Search panel.
For now I have used default text input fields but I believe we can change Requests and Plugins for select inputs (using Selectpicker). We can also use Typeahead.js when user starts typing the usernames and a Datepicker for Date. I was thinking for the Date column maybe we could use a date range instead of a single date search. In this case we would have another column in Advanced Search with another datepicker input (From - To approach).
BTW, if User Activity Log screen will be a part of Wok, then what should the navbar look like when this page is active? Should we hide the navbar? Create another first-level element for this page? Display it next to User and Help drop-downs?
Regards, Samuel
-----Original Message----- From: kimchi-devel-bounces@ovirt.org [mailto:kimchi-devel-bounces@ovirt.org] On Behalf Of Lucio Correia Sent: quarta-feira, 10 de fevereiro de 2016 14:49 To: Walter Niklaus <niklaus@linux.vnet.ibm.com>; Aline Manera <alinefm@linux.vnet.ibm.com>; Kimchi Devel <kimchi-devel@ovirt.org> Subject: Re: [Kimchi-devel] [RFC] [Wok] Feature: User Activity Log
On 10-02-2016 13:58, Walter Niklaus wrote:
This is a great new feature: +1
I have one question on the backend side section.
Backend design -------------- - Define activity texts for each currently implemented activity of all plugins - Implement method to retrieve the activity texts in Wok and all plugins - Log events to a JSON file in the host file system. Each user request received by Wok will generate an entry in the respective log file. Fields to be saved for each entry: plugin, datetime, user, request type (PUT, POST, GET, DELETE), activity text (i.e. "create guest 'vm-sample'") - Implement code for retrieving and filtering log events by the fields above
Are we planning with any archiving or wrap-around feature for the JSON file ? If we are simply accumulating the entries in the same file, I'm concerned that at a certain point we may end with a huge file and run into performance issues. As a start we could define a simple wrap-around mechanism and leave
On 10.02.2016 15:36, Aline Manera wrote: ... the responsibilty for archiving to the administrator. The plan is to have file size limit and log rotation. There are some logging facilities in Python which allow for that.
-- Lucio Correia Software Engineer IBM LTC Brazil
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel

On 02/19/2016 09:38 AM, Samuel Henrique De Oliveira Guimaraes wrote:
Yes, it does. What about the input fields for the advanced search?
The input fields are good for me. Probably, they may change according to what we will have available in the API. But for a quick off, those are we have planned by now.
And the Download button, is the placement correct or should we put a button on the top?
The download button is for the whole grid content instead of table entry. So move it to on top of the grid.
Samuel
-----Original Message----- From: Aline Manera [mailto:alinefm@linux.vnet.ibm.com] Sent: quarta-feira, 17 de fevereiro de 2016 11:40 To: Samuel Henrique De Oliveira Guimaraes <samuel.guimaraes@eldorado.org.br>; luciojhc@linux.vnet.ibm.com; Walter Niklaus <niklaus@linux.vnet.ibm.com>; Kimchi Devel <kimchi-devel@ovirt.org> Subject: Re: [Kimchi-devel] [RFC] [Wok] Feature: User Activity Log
Hi Samuel,
Thanks for the mockups!
The "Advanced Search" should be displayed inside the "User Activity Log" element.
+ User Activity Log | Advanced Search | | Filter|
The "Advanced Search" can continue to be an expanded area but move it inside the "User Activity Log".
Does that make sense?
Regards, Aline Manera
On 02/16/2016 11:22 AM, Samuel Henrique De Oliveira Guimaraes wrote:
Hi team,
I've created two wireframes for the User Activity Log. One features the default jQuery Bootgrid with inline filter (I've changed the label to "filter" to match other screens and make it easier for the user to distinguish filter from search) and another one features the collapsed Advanced Search panel.
For now I have used default text input fields but I believe we can change Requests and Plugins for select inputs (using Selectpicker). We can also use Typeahead.js when user starts typing the usernames and a Datepicker for Date. I was thinking for the Date column maybe we could use a date range instead of a single date search. In this case we would have another column in Advanced Search with another datepicker input (From - To approach).
BTW, if User Activity Log screen will be a part of Wok, then what should the navbar look like when this page is active? Should we hide the navbar? Create another first-level element for this page? Display it next to User and Help drop-downs?
Regards, Samuel
-----Original Message----- From: kimchi-devel-bounces@ovirt.org [mailto:kimchi-devel-bounces@ovirt.org] On Behalf Of Lucio Correia Sent: quarta-feira, 10 de fevereiro de 2016 14:49 To: Walter Niklaus <niklaus@linux.vnet.ibm.com>; Aline Manera <alinefm@linux.vnet.ibm.com>; Kimchi Devel <kimchi-devel@ovirt.org> Subject: Re: [Kimchi-devel] [RFC] [Wok] Feature: User Activity Log
On 10-02-2016 13:58, Walter Niklaus wrote:
This is a great new feature: +1
I have one question on the backend side section.
Backend design -------------- - Define activity texts for each currently implemented activity of all plugins - Implement method to retrieve the activity texts in Wok and all plugins - Log events to a JSON file in the host file system. Each user request received by Wok will generate an entry in the respective log file. Fields to be saved for each entry: plugin, datetime, user, request type (PUT, POST, GET, DELETE), activity text (i.e. "create guest 'vm-sample'") - Implement code for retrieving and filtering log events by the fields above
Are we planning with any archiving or wrap-around feature for the JSON file ? If we are simply accumulating the entries in the same file, I'm concerned that at a certain point we may end with a huge file and run into performance issues. As a start we could define a simple wrap-around mechanism and leave
On 10.02.2016 15:36, Aline Manera wrote: ... the responsibilty for archiving to the administrator. The plan is to have file size limit and log rotation. There are some logging facilities in Python which allow for that.
-- Lucio Correia Software Engineer IBM LTC Brazil
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel

I created a new issue on Github for Wok related to the UI / front-end. I also attached a new wireframe with the proposed changes within this issue: https://github.com/kimchi-project/wok/issues/36 Items that I need to confirm before we start developing this screen: -Should we create a new plugin with a tab-ext.xml file like Ginger, Kimchi and Gingerbase or make the tab hard-coded with Wok and checking if the user has access to this tab? I mean after parsing all the tab-ext.xml files from other plugins we can append a "default" string with this new tab and point the URL to wok/ui/pages or something. -What is the new tab title? Settings? Configuration? -Should we use the old Ginger Admin color (from the new-ui mockups created by Susan)? -Will the API support a date range? I think we can use a single date range picker input, if we use this library: http://www.daterangepicker.com/. If we all agree with this, then I'll submit a patch ASAP before code freeze. In the new mockup I did, I used a single datepicker for each date field. -Should we keep jQuery Bootgrid inline-search and rename it to Filter? -Are you ok with the labels for each Plugin? Thanks, Samuel -----Original Message----- From: kimchi-devel-bounces@ovirt.org [mailto:kimchi-devel-bounces@ovirt.org] On Behalf Of Samuel Henrique De Oliveira Guimaraes Sent: sexta-feira, 19 de fevereiro de 2016 09:38 To: Aline Manera <alinefm@linux.vnet.ibm.com>; luciojhc@linux.vnet.ibm.com; Walter Niklaus <niklaus@linux.vnet.ibm.com>; Kimchi Devel <kimchi-devel@ovirt.org> Subject: Re: [Kimchi-devel] [RFC] [Wok] Feature: User Activity Log Yes, it does. What about the input fields for the advanced search? And the Download button, is the placement correct or should we put a button on the top? Samuel -----Original Message----- From: Aline Manera [mailto:alinefm@linux.vnet.ibm.com] Sent: quarta-feira, 17 de fevereiro de 2016 11:40 To: Samuel Henrique De Oliveira Guimaraes <samuel.guimaraes@eldorado.org.br>; luciojhc@linux.vnet.ibm.com; Walter Niklaus <niklaus@linux.vnet.ibm.com>; Kimchi Devel <kimchi-devel@ovirt.org> Subject: Re: [Kimchi-devel] [RFC] [Wok] Feature: User Activity Log Hi Samuel, Thanks for the mockups! The "Advanced Search" should be displayed inside the "User Activity Log" element. + User Activity Log | Advanced Search | | Filter| The "Advanced Search" can continue to be an expanded area but move it inside the "User Activity Log". Does that make sense? Regards, Aline Manera On 02/16/2016 11:22 AM, Samuel Henrique De Oliveira Guimaraes wrote:
Hi team,
I've created two wireframes for the User Activity Log. One features the default jQuery Bootgrid with inline filter (I've changed the label to "filter" to match other screens and make it easier for the user to distinguish filter from search) and another one features the collapsed Advanced Search panel.
For now I have used default text input fields but I believe we can change Requests and Plugins for select inputs (using Selectpicker). We can also use Typeahead.js when user starts typing the usernames and a Datepicker for Date. I was thinking for the Date column maybe we could use a date range instead of a single date search. In this case we would have another column in Advanced Search with another datepicker input (From - To approach).
BTW, if User Activity Log screen will be a part of Wok, then what should the navbar look like when this page is active? Should we hide the navbar? Create another first-level element for this page? Display it next to User and Help drop-downs?
Regards, Samuel
-----Original Message----- From: kimchi-devel-bounces@ovirt.org [mailto:kimchi-devel-bounces@ovirt.org] On Behalf Of Lucio Correia Sent: quarta-feira, 10 de fevereiro de 2016 14:49 To: Walter Niklaus <niklaus@linux.vnet.ibm.com>; Aline Manera <alinefm@linux.vnet.ibm.com>; Kimchi Devel <kimchi-devel@ovirt.org> Subject: Re: [Kimchi-devel] [RFC] [Wok] Feature: User Activity Log
On 10-02-2016 13:58, Walter Niklaus wrote:
This is a great new feature: +1
I have one question on the backend side section.
Backend design -------------- - Define activity texts for each currently implemented activity of all plugins - Implement method to retrieve the activity texts in Wok and all plugins - Log events to a JSON file in the host file system. Each user request received by Wok will generate an entry in the respective log file. Fields to be saved for each entry: plugin, datetime, user, request type (PUT, POST, GET, DELETE), activity text (i.e. "create guest 'vm-sample'") - Implement code for retrieving and filtering log events by the fields above
Are we planning with any archiving or wrap-around feature for the JSON file ? If we are simply accumulating the entries in the same file, I'm concerned that at a certain point we may end with a huge file and run into performance issues. As a start we could define a simple wrap-around mechanism and leave
On 10.02.2016 15:36, Aline Manera wrote: ... the responsibilty for archiving to the administrator. The plan is to have file size limit and log rotation. There are some logging facilities in Python which allow for that.
-- Lucio Correia Software Engineer IBM LTC Brazil
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel
_______________________________________________ Kimchi-devel mailing list Kimchi-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel
participants (5)
-
Aline Manera
-
Jose Ricardo Ziviani
-
Lucio Correia
-
Samuel Henrique De Oliveira Guimaraes
-
Walter Niklaus