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 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 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 http_connect(host, method, path, headers=None): conn = HTTPConnection(host) conn.path = path conn.putrequest(method, path) if headers: for header, value in headers.items(): if isinstance(value, (list, tuple)): for k in value: conn.putheader(header, str(k)) else: conn.putheader(header, str(value)) conn.endheaders() return conn
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 http_connection(url): ''' test http_connection ''' parsed = urlparse(url) conn = HTTPConnection(parsed.netloc) return parsed, conn
def getresponse(self): response = HTTPConnection.getresponse(self) logging.debug(("HTTP PERF: %(time).5f seconds to %(method)s " "%(host)s:%(port)s %(path)s)"), {'time': time.time() - self._connected_time, 'method': self._method, 'host': self.host, 'port': self.port, 'path': self._path}) return response
def getresponse(self): response = HTTPConnection.getresponse(self) logging.debug(_("HTTP PERF: %(time).5f seconds to %(method)s " "%(host)s:%(port)s %(path)s)"), {'time': time.time() - self._connected_time, 'method': self._method, 'host': self.host, 'port': self.port, 'path': self._path}) return response
def http_connect(host, method, path, headers=None): conn = HTTPConnection(host) conn.path = path conn.putrequest(method, path) if headers: for header, value in headers.iteritems(): conn.putheader(header, str(value)) conn.endheaders() return conn
def connect(self): #self._connected_time = time.time() #return HTTPConnection.connect(self) #with open("/home/ubuntu/spawn.txt", "a") as tran_file: # tran_file.write("At Connect = "+str(datetime.now())+"\n") self._connected_time = time.time() ret = HTTPConnection.connect(self) #self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) #self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) #self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) return ret
def putrequest(self, method, url, skip_host=0, skip_accept_encoding=0): '''Send a request to the server. :param method: specifies an HTTP request method, e.g. 'GET'. :param url: specifies the object being requested, e.g. '/index.html'. :param skip_host: if True does not add automatically a 'Host:' header :param skip_accept_encoding: if True does not add automatically an 'Accept-Encoding:' header ''' self._method = method self._path = url return HTTPConnection.putrequest(self, method, url, skip_host, skip_accept_encoding)
def http_connection(url, proxy=None): """ Make an HTTPConnection or HTTPSConnection :param url: url to connect to :param proxy: proxy to connect through, if any; None by default; str of the format 'http://127.0.0.1:8888' to set one :returns: tuple of (parsed url, connection object) :raises ClientException: Unable to handle protocol scheme """ parsed = urlparse(url) proxy_parsed = urlparse(proxy) if proxy else None if parsed.scheme == 'http': conn = HTTPConnection((proxy_parsed if proxy else parsed).netloc) elif parsed.scheme == 'https': conn = HTTPSConnection((proxy_parsed if proxy else parsed).netloc) else: raise ClientException('Cannot handle protocol scheme %s for url %s' % (parsed.scheme, repr(url))) if proxy: conn._set_tunnel(parsed.hostname, parsed.port) return parsed, conn
def getresponse(self): response = HTTPConnection.getresponse(self) LOG.debug( "HTTP PERF: %(time).5f seconds to %(method)s " "%(host)s:%(port)s %(path)s)", { "time": time.time() - self._connected_time, "method": self._method, "host": self.host, "port": self.port, "path": self._path, }, ) return response
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'
def getresponse(self): response = HTTPConnection.getresponse(self) return response
def connect(self): self._connected_time = time.time() return HTTPConnection.connect(self)
def putrequest(self, method, url, skip_host=0, skip_accept_encoding=0): self._method = method self._path = url return HTTPConnection.putrequest(self, method, url, skip_host, skip_accept_encoding)
def close(self): #pass HTTPConnection.close(self)
def putheader(self, header, value): if not isinstance(header, bytes): header = header.encode('latin-1') HTTPConnection.putheader(self, header, value)
def getresponse(self): response = HTTPConnection.getresponse(self) logging.debug('HTTP %s %s:%s %s', self._method, self.host, self.port, self._path) return response
def connect(self): self._connected_time = time.time() ret = HTTPConnection.connect(self) self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) return ret
def putrequest(self, method, url, skip_host=0, skip_accept_encoding=0): self._method = method # save method for getexpect method return BaseHTTPConnection.putrequest(self, method, url, skip_host, skip_accept_encoding)
def connect(self): r = HTTPConnection.connect(self) self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) return r
def putheader(self, header, value): if header.lower() == 'x-cf-trans-id': self._txn_id = value return HTTPConnection.putheader(self, header, value)
def getresponse(self): response = HTTPConnection.getresponse(self) logging.debug("HTTP PERF: %.5f seconds to %s %s:%s %s (%s)" % (time.time() - self._connected_time, self._method, self.host, self.port, self._path, self._txn_id)) return response