[Kimchi-devel] [PATCH 1/3] Plugins: Fix plugins framework in kimchi

Rodrigo Trujillo rodrigo.trujillo at linux.vnet.ibm.com
Fri Jan 17 18:43:36 UTC 2014


On 01/16/2014 12:31 AM, Aline Manera wrote:
> On 01/14/2014 02:17 PM, Rodrigo Trujillo wrote:
>> If the plugin tab name string is not found in kimchi i18n file, the
>> tab name is set as 'unknown'. This patch fixes this problem and also
>> adds routines to add tab html file in cherrypy configuration automati
>> cally.
>>
>> Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo at linux.vnet.ibm.com>
>> ---
>>   src/kimchi/server.py     | 38 ++++++++++++++++++++++++++++++++++++--
>>   ui/js/src/kimchi.main.js |  2 +-
>>   2 files changed, 37 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/kimchi/server.py b/src/kimchi/server.py
>> index b820263..919e2e0 100644
>> --- a/src/kimchi/server.py
>> +++ b/src/kimchi/server.py
>> @@ -28,6 +28,10 @@ import logging.handlers
>>   import os
>>   import sslcert
>>
>> +
>> +from xml.etree import ElementTree
>> +
>> +
>>   from kimchi import auth
>>   from kimchi import config
>>   from kimchi import model
>> @@ -208,13 +212,43 @@ class Server(object):
>>                   script_name = plugin_config['kimchi']['uri']
>>                   del plugin_config['kimchi']
>>
>> +                tabs_extra_file = 
>> config.get_plugin_tab_xml(plugin_name)
>>                   plugin_config['/ui/config/tab-ext.xml'] = {
>>                       'tools.staticfile.on': True,
>> -                    'tools.staticfile.filename':
>> -                    config.get_plugin_tab_xml(plugin_name),
>> +                    'tools.staticfile.filename': tabs_extra_file,
>>                       'tools.nocache.on': True}
>> +
>
>
>
>> +                # Providing plugin tabs htmls
>> +                et = ElementTree.ElementTree(file=tabs_extra_file)
>> +
>> +                tabs = et.findall('tab')
>> +                for tab in tabs:
>> +                    html = tab.find('path').text
>> +                    tabs_extra_file = 
>> os.path.join(config.get_prefix(), html)
>> +                    if html.startswith('/'):
>> +                        html = html.replace(script_name,'')
>> +                    else:
>> +                        html = html.replace(script_name[1:],'')
>> +                    plugin_config[html] = {
>> +                        'tools.staticfile.on': True,
>> +                        'tools.staticfile.filename': tabs_extra_file,
>> +                        'tools.nocache.on': True}
>> +
>>               except KeyError:
>>                   continue
>> +            except IOError as e:
>> +                msg = "Failed to load plugin tabs file %s" 
>> %tabs_extra_file
>> +                cherrypy.log.error_log.error(msg)
>> +                cherrypy.log.error_log.error('Ignoring plugin "%s"',
>> +                                             plugin_name)
>> +                continue
>> +            except ElementTree.ParseError as e:
>> +                msg = "XML parse error in file %s: %s" %(
>> +                          tabs_extra_file, e.msg)
>> +                cherrypy.log.error_log.error(msg)
>> +                cherrypy.log.error_log.error('Ignoring plugin "%s"',
>> +                                             plugin_name)
>> +                continue
>
>
> From kimchi perspective, we only need to know the tabs.xml for each 
> plugin - so UI can load the interface in one view
> All other cherrypy configuration should be handled by the plugin 
> config file.
> So all the above code isn't needed.

Yeap, agree. Just sent a new patch without this modifications
Thanks.

>
>
>>
>>               try:
>>                   plugin_app = import_class(plugin_class)()
>> diff --git a/ui/js/src/kimchi.main.js b/ui/js/src/kimchi.main.js
>> index cc8afee..8b84a34 100644
>> --- a/ui/js/src/kimchi.main.js
>> +++ b/ui/js/src/kimchi.main.js
>> @@ -211,7 +211,7 @@ kimchi.getTabHtml = function(url) {
>>               $(xmlData).find('tab').each(function() {
>>                   var $tab = $(this);
>>                   var titleKey = $tab.find('title').text();
>> -                var title = i18n[titleKey];
>> +                var title = i18n[titleKey] || titleKey;
>>                   var path = $tab.find('path').text();
>>                   tabsHtml += "<li><a class='item' href=" + path + 
>> ">" + title + "</a></li>";
>>               });
>
> _______________________________________________
> 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