[Kimchi-devel] [PATCH V2] Issue #737: Fix to remove twice calls of resource lookup on GET OPERATION

Aline Manera alinefm at linux.vnet.ibm.com
Thu Nov 5 12:16:23 UTC 2015



On 05/11/2015 10:14, Aline Manera wrote:
>
> Hi Archana,
>
> After some tests, I verified this patch set broke the guest 
> authorization feature.
>
> The guest authorization feature allows user to specify which users and 
> groups can access a specific resource.
>
> For example, in my system:
>
> GET /plugins/kimchi/vms/fedora22
> {
> *"users":[**
> **    "guest"**
> **  ],*
>   "screenshot":null,
>   "cpus":2,
>   "persistent":true,
> *"groups":[],*
>   "graphics":{
>     "passwd":null,
>     "passwdValidTo":null,
>     "type":"vnc",
>     "port":null,
>     "listen":"127.0.0.1"
>   },
>   "icon":null,
>   "stats":{
>     "cpu_utilization":0,
>     "io_throughput":0,
>     "io_throughput_peak":100,
>     "net_throughput":0,
>     "mem_utilization":0,
>     "net_throughput_peak":100
>   },
>   "name":"fedora22",
>   "uuid":"7a07310c-6fd9-47e4-b8e1-ac5a7bd82c79",
>   "access":"full",
>   "state":"shutoff",
>   "memory":4096.0
> }
>
> That means, in addition to sysadmin the user 'guest' can also have 
> access to the virtual machine "fedora22"
>
> After applying this patch, any user can has access to any virtual 
> machine, ie, the guest authorization configuration is being ignored.
> See below:
>
> GET /plugins/kimchi/vms/ubuntu15.04
> {
> *  "users":[],*
>   "screenshot":null,
>   "cpus":1,
>   "persistent":true,
> *  "groups":[],*
>   "graphics":{
>     "passwd":null,
>     "passwdValidTo":null,
>     "type":"vnc",
>     "port":null,
>     "listen":"127.0.0.1"
>   },
>   "icon":null,
>   "stats":{
>     "cpu_utilization":0,
>     "io_throughput":0,
>     "io_throughput_peak":100,
>     "net_throughput":0,
>     "mem_utilization":0,
>     "net_throughput_peak":100
>   },
>   "name":"ubuntu15.04",
>   "uuid":"aafc4eb0-9f8e-4f8e-b001-390b180c3675",
>   "access":"full",
>   "state":"shutoff",
>   "memory":4096.0
> }
>
> If I log into Kimchi as 'guest' user, I can also perform operation on 
> 'ubuntu15.04' virtual machine but as you can see, only the sysadmin 
> should be able to do that.
>

Just one more information. Without your patch, while trying to access 
the 'ubuntu15.04' virtual machine as 'guest' user I get the following:

<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
     <meta http-equiv="Content-Type" content="text/html; 
charset=utf-8"></meta>
     <title>403 Forbidden</title>
     <style type="text/css">
     #powered_by {
         margin-top: 20px;
         border-top: 2px solid black;
         font-style: italic;
     }

     #traceback {
         color: red;
     }
     </style>
</head>
     <body>
         <h2>403 Forbidden</h2>
         <p>WOKAPI0009E: WOKAPI0009E</p>
         <pre id="traceback">Traceback (most recent call last):
   File "/usr/lib/python2.7/dist-packages/cherrypy/_cprequest.py", line 
670, in respond
     response.body = self.handler()
   File "/usr/lib/python2.7/dist-packages/cherrypy/lib/encoding.py", 
line 217, in __call__
     self.body = self.oldhandler(*args, **kwargs)
   File "/usr/lib/python2.7/dist-packages/cherrypy/_cpdispatch.py", line 
61, in __call__
     return self.callable(*self.args, **self.kwargs)
   File "/home/alinefm/kimchi/src/wok/control/base.py", line 178, in index
     raise cherrypy.HTTPError(403, e.message)
HTTPError: (403, u'WOKAPI0009E: WOKAPI0009E')
</pre>
     <div id="powered_by">
       <span>
         Powered by <a href="http://www.cherrypy.org">CherryPy 3.5.0</a>
       </span>
     </div>
     </body>
</html>

> On 03/11/2015 16:54, archus at linux.vnet.ibm.com wrote:
>> From: Archana Singh<archus at linux.vnet.ibm.com>
>>
>> Incase of GET lookup was called twice.
>>      Once lookup() before is_authorized() and then in self.get().
>>      This added overhead to system when lookup() is called
>>      for each value in list from get_list() of Collection.
>>      So to avoid this overhead, lookup() should not be called
>>      before self.get().
>>      
>>      1) Added lookup() call from Resource's update(), delete().
>>      2) Removed lookup() call from Resource's index().
>>      2) As is_authorized() calls self.data which calls self.info.
>>      Added check to make sure that self.data only get called
>>      if self.info is not None. And intialized self.info as None
>>      in __init__. As its value is getting assigned in lookup().
>>      3) In _generate_action_handler_base(), lookup() was getting
>>      called before is_authorized(), move its call after is_authorized().
>>
>> Archana Singh (1):
>>    Issue #737: Fix to remove twice calls of resource lookup on GET
>>      OPERATION
>>
>>   src/wok/control/base.py | 16 ++++++++++------
>>   1 file changed, 10 insertions(+), 6 deletions(-)
>>
>
>
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ovirt.org/pipermail/kimchi-devel/attachments/20151105/d93fee8a/attachment.html>


More information about the Kimchi-devel mailing list