[Openstack] Fw: problem in understanding interaction between swift proxy and other servers through swift source code

Hua ZZ Zhang zhuadl at cn.ibm.com
Fri Sep 27 09:15:06 UTC 2013


see underlined code below. it is invoked by sending http request and get
result from response.



                                                                           
             pragya jain                                                   
             <prag_2648 at yahoo.                                             
             co.in>                                                     To 
                                       Hua ZZ Zhang/China/IBM at IBMCN,       
             2013-09-27 下午                                            cc 
             04:11                     "openstack at lists.openstack.org"     
                                       <openstack at lists.openstack.org>     
                                                                   Subject 
             Please respond to         Re: [Openstack] Fw: problem in      
                pragya jain            understanding interaction between   
             <prag_2648 at yahoo.         swift	proxy and other servers      
                  co.in>               through swift source code           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




But, Sir, At which line of code in the func
def _make_request(self, nodes, part, method, path, headers, query,
                      logger_thread_locals):
flow of control move to the AccoountController class defined in
swift/account/server.py (for example)

def _make_request(self, nodes, part, method, path, headers, query,
                      logger_thread_locals):
        """
        Sends an HTTP request to a single node and
 aggregates the result.
        It attempts the primary node, then iterates over the handoff nodes
        as needed.

        :param nodes: an iterator of the backend server and handoff servers
        :param part: the partition number
        :param method: the method to send to the
 backend
        :param path: the path to send to the backend
        :param headers: a list of dicts, where each dict represents one
                        backend request that should be made.
        :param query: query string to send to the backend.
        :param logger_thread_locals: The thread local values to be set on
the
                                     self.app.logger to retain transaction
                                     logging information.
        :returns: a swob.Response object
        """
        self.app.logger.thread_locals = logger_thread_locals
        for node in nodes:
            try:
                start_node_timing = time.time()
                with ConnectionTimeout(self.app.conn_timeout):
                    conn = http_connect(node['ip'], node['port'],
                                        node['device'], part, method, path,
                                        headers=headers, query_string=
query)
                    conn.node = node
                self.app.set_node_timing(node, time.time() -
start_node_timing)
                with Timeout(self.app.node_timeout):
                    resp = conn.getresponse()
                    if not is_informational(resp.status) and \
                            not is_server_error(resp.status):
                        return resp.status, resp.reason, resp.getheaders(),
\
                            resp.read()
                    elif resp.status == HTTP_INSUFFICIENT_STORAGE:
                        self.error_limit(node, _('ERROR Insufficient
Storage'))
            except (Exception, Timeout):
                self.exception_occurred(node, self.server_type,
                                        _('Trying to %(method)s %(path)s')
%
                                        {'method': method, 'path': path})

---

Thank you very much

Pragya Jain
 From: Hua ZZ Zhang <zhuadl at cn.ibm.com>
 To: pragya jain <prag_2648 at yahoo.co.in>
 Cc: "openstack at lists.openstack.org" <openstack at lists.openstack.org>
 Sent: Friday, 27 September 2013 1:12 PM
 Subject: Re: [Openstack] Fw: problem in understanding interaction between
 swift proxy and other servers through swift source code

 in swift/proxy/controllers/base.py

 def make_requests(self, req, ring, part, method, path, headers,
                       query_string=''):

 def _make_request(self, nodes, part, method, path, headers, query,
                       logger_thread_locals):


 Inactive hide details for pragya jain ---2013-09-27 下午 02:55:44---pragya
 jain <prag_2648 at yahoo.co.in>pragya jain ---2013-09-27 下午
 02:55:44---pragya jain <prag_2648 at yahoo.co.in>
                                                                           
                                                                           
                                                                           
                                                                           
                                                                        To 
                                                                           
                                                                           
                                                                        cc 
                                                                           
                                                                           
                                                                   Subject 
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           



 Thanks Zhang for the reply.
 but my question is:
 According to swift source code,
 through which function call, the proxy server interact with account
 server, i.e., flow of control go from proxy server code to account server
 code?

 Thanks again

 Pragya Jain


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20130927/81c6571d/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: graycol.gif
Type: image/gif
Size: 105 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20130927/81c6571d/attachment.gif>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pic29732.gif
Type: image/gif
Size: 1255 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20130927/81c6571d/attachment-0001.gif>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ecblank.gif
Type: image/gif
Size: 45 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20130927/81c6571d/attachment-0002.gif>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: EB007987.gif
Type: image/gif
Size: 1255 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20130927/81c6571d/attachment-0003.gif>


More information about the Openstack mailing list