def POST(self, env): """Handle posts dealing with metadata alteration""" req = Request(env) conn = HTTPConnection('%s:%s' % (self.mds_ip, self.mds_port)) headers = req.params version, acc, con, obj = split_path(req.path, 1, 4, True) if not con: try: info = get_account_info(env, self.app) if info: stor_policy = info['storage_policy'] headers['storage_policy'] = stor_policy except: pass else: try: info = get_container_info(env, self.app) if info: stor_policy = info['storage_policy'] headers['storage_policy'] = stor_policy except: pass conn.request('POST', req.path, headers=headers) resp = conn.getresponse() #confirm response then pass along the request return self.app
def http_connection(url): ''' test http_connection ''' parsed = urlparse(url) conn = HTTPConnection(parsed.netloc) return parsed, conn
def COPY(self, env): """Eliminate metadata for deleted objects""" req = Request(env) conn = HTTPConnection('%s:%s' % (self.mds_ip, self.mds_port)) headers = req.params conn.request('COPY', req.path, headers=headers) resp = conn.getresponse() #confirm response then pass along the request return self.app
def GET(self, req): """Handle the query request.""" conn = HTTPConnection('%s:%s' % (self.mds_ip, self.mds_port)) headers = req.params conn.request('GET', req.path, headers=headers) resp = conn.getresponse() return Response(request=req, body=resp.read(), content_type=resp.getheader('Content-Type'))
def sendData(self, metaList, data_type, server_ip, server_port): ip = server_ip port = server_port updatedData = json.dumps(metaList) headers = {'user-agent': data_type} with ConnectionTimeout(self.conn_timeout): try: conn = HTTPConnection('%s:%s' % (ip, port)) conn.request('PUT', '/', headers=headers, body=updatedData) resp = conn.getresponse() return resp except (Exception, Timeout): return HTTP_INTERNAL_SERVER_ERROR
def PUT(self, env): """Handle PUT requests related to metadata""" req = Request(env) conn = HTTPConnection('%s:%s' % (self.mds_ip, self.mds_port)) headers = req.params try: info = get_container_info(env, self.app) if info: stor_policy = info['storage_policy'] headers['storage_policy'] = stor_policy except: pass conn.request('PUT', req.path, headers=headers) resp = conn.getresponse() return self.app
def send_to_peer(self, peer, sync_to_peer, key): peer = peer.lower() ssl = False if peer.startswith('https://'): ssl = True peer = peer[8:] if peer.startswith('http://'): peer = peer[7:] try: with Timeout(self.conn_timeout): if ssl: #print 'HTTPS %s ' % peer conn = HTTPSConnection(peer) else: #print 'HTTP %s ' % peer conn = HTTPConnection(peer) conn.putrequest(self.req.method, self.req.path_qs) conn.putheader('X-Orig-Cluster', self.my_cluster) conn.putheader('X-Account-Meta-Orig-Cluster', self.my_cluster) conn.putheader('X-Container-Meta-Orig-Cluster', self.my_cluster) if key: sync_to = sync_to_peer + self.env['PATH_INFO'] conn.putheader('X-Container-Sync-To', sync_to) for header, value in self.req.headers.iteritems(): if header != 'X-Container-Sync-To': conn.putheader(header, value) conn.endheaders(message_body=None) with Timeout(self.req_timeout): resp = conn.getresponse() status = resp.status return (status, resp.getheaders(), resp.read()) except (Exception, Timeout) as e: # Print error log print >> sys.stderr, peer + ': Exception, Timeout error: %s' % e print '<<<<<<<< HTTP_SERVICE_UNAVAILABLE'