def getProperties(self,bucket, idObj,field,uid,gid,context): self._LOGGER.info("Getting object properties ") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj,field,uid, gid , context) item, meta = self.cacheMng.getMetaItem(idObj, field) if item and meta['vers']==-1: self._LOGGER.info("If item is subscribed ") return item if item and self._isValid(item, meta): self._LOGGER.info("The version is cache-coerent") self._LOGGER.debug("meta %s" % meta) return item if not self._isValid(item, meta): self.srv_num_get_failed += 1 msg = JsonRPCPayload('getObjectVersion',[idObj,field,uid,gid,context]) self._send(msg) if meta: if meta['vers'] == msg.get('result'): self._LOGGER.info("The version is coerent with cache version") return item self.srv_num_get += 1 msg = JsonRPCPayload('getAttributes',[idObj,field,uid,gid,context]) self._send(msg) item = msg.get('result') self.cacheMng.setMetaItem(idObj,field,item,item['vers']) self.srv_num_set += 1 return item
def getProperties(self, bucket, idObj, field, context): #context should have context.gid, context,uid, context,token gid, uid, token = '','','' self._LOGGER.info("Getting object properties ") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj, field, uid, gid , token) #Check presence in cache item, meta = self.cacheMng.getMetaItem(idObj, field) #Check Subscribe if item != None and meta != None and meta['vers'] == -1: self._LOGGER.debug("meta %s" % meta) return item #Check if the object is unchanged elif item != None: self.COUNTER['srv_num_get'] += 1 msg = JsonRPCPayload('getObjectVersion',[idObj,field, uid, gid, token]) self._send(bucket,msg) if meta['vers'] == msg.get('result'): self._LOGGER.info("The version is coerent with cache version") return item # Not Present in cache self.COUNTER['srv_num_get_failed'] += 1 msg = JsonRPCPayload('getAttributes',[idObj,field, uid, gid, token]) self._send(bucket,msg) item = msg.get('result') self.cacheMng.setMetaItem(idObj, field, item, item['vers']) self.COUNTER['srv_num_set'] += 1 return item
def setAttributes(self,bucket, idObj, obj, context): self._LOGGER.info("Setting object attributes ") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj, context.uid, context.gid , context) #RPC msg = JsonRPCPayload('setAttributes',[bucket,idObj, obj, context.uid, context.gid, context]) self._send(bucket,msg) vers = msg.get('result') self.cacheMng.setMetaItem(idObj, field, obj, vers) return msg.get('result')
def getObjectSegment(self, bucket, idObj, idSeg, uid, gid, context): self._LOGGER.info("Getting object Segment ") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj,uid, gid , context) '''field = 'segment-'+idSeg '########### filed del mio getObjectSegment', field item, meta = self.cacheMng.getMetaItem(idObj, field) '########### guardo se ho in cache meta e item',meta,item if item and meta['vers']==-1: return item if item and self._isValid(item, meta): return item if not self._isValid(item, meta): msg = JsonRPCPayload('getObjectVersion',[idObj,field,uid,gid,context]) self._send(msg) if meta: if meta['vers'] == msg.get('result'): print 'item',item return item '########### getto object segment''' msg = JsonRPCPayload('getObjectSegment',[idObj,idSeg, uid, gid,context]) self._send(bucket,msg) item = msg.get('result') '''self.cacheMng.setMetaItem(idObj,field,item,item['vers'])''' return item
def setAttributesFromNew(self,bucket, idObj,obj,uid,gid,context): self._LOGGER.info("Setting object attributes ") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj,uid, gid , context) msg = JsonRPCPayload('setAttributesFromNew',[bucket,idObj,obj,uid,gid,context]) self._send(bucket,msg) return msg.get('result')
def setObjectSegment(self, bucket, idObj, idSeg, seg, uid, gid, context): self._LOGGER.info("Setting object Segment ") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj,idSeg,seg,uid, gid , context) msg = JsonRPCPayload('setObjectSegment',[idObj,str(idSeg), seg, uid, gid,context]) self._send(bucket,msg) return msg.get('result')
def removeSegment(self,bucket, idObj, key, uid=None, gid=None, context=None): self._LOGGER.info("Removing Segment ") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj,key,uid, gid , context) msg = JsonRPCPayload('remove',[bucket,idObj, key, uid, gid,context]) self._sendData(bucket,msg) return msg.get('result')
def listObjectXattr(self, bucket, idObj, uid, gid, context): self._LOGGER.info("Listing object Xattr ") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj,uid, gid , context) msg = JsonRPCPayload('listObjectXattr',[idObj, uid, gid,context]) self._send(msg) return msg.get('result')
def setObjectUtime(self, bucket, idObj, utime, uid, gid, context): self._LOGGER.info("Setting object mode ") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj,utime,uid, gid , context) msg = JsonRPCPayload('setObjectUtime',[idObj,utime,uid,gid,context]) self._send(msg) return msg.get('result')
def delObjectXattr(self, bucket, idObj, name, context): self._LOGGER.info("Deleting object Xattr ") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj,name, context.uid, context.gid , context.token) msg = JsonRPCPayload('delObjectXattr',[bucket,idObj, name, context.uid, context.gid, context.token]) self._send(bucket,msg) #FIXME CACHE INVALIDATION return msg.get('result')
def getObjectList(self,bucket,idObj,uid,gid,context): self._LOGGER.info("Getting object list %s") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj,uid, gid , context) msg = JsonRPCPayload('getObjectList',[idObj,uid,gid,context]) self._send(msg) return msg.get('result')
def removeObject(self, bucket, idObj, uid, gid, context): self._LOGGER.info("Removing object %s") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj,uid, gid , context) msg = JsonRPCPayload('removeObject',[idObj, uid, gid,context]) self._send(msg) self.cacheMng.delMetaObj(idObj) self.srv_num_set += 1 return msg.get('result')
def createObject(self, bucket, path, obj_type, mode, uid, gid , context): self._LOGGER.info("Creating object %s") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, path, obj_type, mode, context.uid, context.gid , context.token) # Send messagge msg = JsonRPCPayload('createObject',[ bucket, path, obj_type, mode, context.uid, context.gid, context.token]) self._send(bucket,msg) return msg.get('result')
def listObjectXattr(self, bucket, idObj, context): self._LOGGER.info("Listing object Xattr ") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj, context.uid, context.gid , context) #RPC msg = JsonRPCPayload('listObjectXattr',[idObj, context.uid, context.gid, context.token]) self._send(bucket,msg) #FIXME CACHE return msg.get('result')
def setObjectUtime(self, bucket, idObj, utime, context): self._LOGGER.info("Setting object mode ") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj,utime, context.uid, context.gid , context.token) #RPC msg = JsonRPCPayload('setObjectUtime',[bucket,idObj,utime, context.uid, context.gid, context.token]) self._send(bucket,msg) #FIXME CACHE INVALIDATION return msg.get('result')
def setObjectXattr(self, bucket, idObj, name, value, context): self._LOGGER.info("Setting object Xattr ") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj,name, value, context.uid, context.gid , context) #RPC msg = JsonRPCPayload('setObjectXattr',[bucket,idObj, name, value, context.uid, context.gid,context]) self._send(bucket,msg) #FIXME CACHE return msg.get('result')
def createObject(self, bucket, path, obj_type, mode, uid, gid , context): print '####################' print 'CACHE CREATE OBJ' print bucket, path, obj_type, mode, uid, gid , context print '####################' self._LOGGER.info("Creating object %s") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, path, obj_type, mode, uid, gid , context) msg = JsonRPCPayload('createObject',[ bucket, path, obj_type, mode, uid, gid, context]) self._send(msg) return msg.get('result')
def removeObject(self, bucket, idObj, context): self._LOGGER.info("Removing object %s") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj, context.uid, context.gid , context.token) # RPC msg = JsonRPCPayload('removeObject',[bucket,idObj, context.uid, context.gid, context.token]) self._send(bucket,msg) self.cacheMng.delMetaObj(idObj) self.COUNTER['srv_num_set'] += 1 return msg.get('result')
def getObjectList(self, bucket,idObj, context): context = ConnectionManager.context self._LOGGER.info("Getting object list %s") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj, context.uid, context.gid , context.security) # RPC # FIXME cache dir item !!! msg = JsonRPCPayload('getObjectList',[idObj, context.uid, context.gid, context.token]) self._send(bucket,msg) return msg.get('result')
def findCluster(self,bucket_name): self._LOGGER.info("FIND Cluster %s" % bucket_name) if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket_name) msg = JsonRPCPayload('findCluster',[bucket_name]) self._sendService(msg) ip_list = msg.get('result') ping_list = [] for ip_address in ip_list: RTT = Ping.doOne(ip_address) ping_list.append((ip_address,RTT)) ping_list = sorted(ping_list, key=lambda i:i[-1]) return ping_list
def writeBlock(self,bucket, idObj, key , block, bhash, uid=None, gid=None, context=None): self._LOGGER.info("Writing Block ") if self._LOGGER.getEffectiveLevel() == 10: self._ourDebug(bucket, idObj,key,block,bhash,uid, gid , context) if isinstance(block,unicode): block = str(block) msg = JsonRPCPayload('writeBlock',[bucket,idObj, key, Binary(block,1), bhash, uid, gid,context]) self._sendData(bucket,msg) item = msg.get('result') if not item: self._LOGGER.info("Writing Block in cache") self.cacheMng.writeBlock(bucket, idObj, key, bhash, block) self.COUNTER['srv_num_set'] += 1 return item
def _findCluster(self,bucket_name): ping_list = [] if options.service_mode == 'ip': ping_list.append(options.service_ip+':'+options.service_port) ip_list = [] for i in ping_list: ip = i.split(':') ip_list.append(ip[0]) for ip_address in ip_list: RTT = Ping.doOne(ip_address) ping_list.append((ip_address+':'+options.service_port,RTT)) ping_list = sorted(ping_list, key=lambda i:i[-1]) else: msg = JsonRPCPayload('findCluster',[bucket_name]) data = self.conn_service.send(msg.getPacket()) msg.load(data) ping_list = msg.get('result') return ping_list
def _findCluster(self, bucket_name): ping_list = [] if options.service_mode == 'ip': ping_list.append(options.service_ip + ':' + options.service_port) ip_list = [] for i in ping_list: ip = i.split(':') ip_list.append(ip[0]) for ip_address in ip_list: RTT = Ping.doOne(ip_address) ping_list.append( (ip_address + ':' + options.service_port, RTT)) ping_list = sorted(ping_list, key=lambda i: i[-1]) else: msg = JsonRPCPayload('findCluster', [bucket_name]) data = self.conn_service.send(msg.getPacket()) msg.load(data) ping_list = msg.get('result') return ping_list
def remove(self,bucket, idObj, uid=None, gid=None, context=None): msg = JsonRPCPayload('removeObject',[bucket,idObj, uid, gid,context]) self._sendData(bucket,msg) return msg.get('result')
def lookup(self,bucket, path): self._LOGGER.info("Lookup operation %s" % path) msg = JsonRPCPayload('lookup',[bucket, path]) self._send(bucket,msg) return msg.get('result')
print payr.getPayload() #DELETE OBJECT print '######DELETE OBJECT######' payload = JsonRPCPayload() payload.setRequest('access', ['momo3','/ciao2.txt','manfred']) print type(payload) websock.send(payload.getPacket()) result = websock.recv() print result payr = JsonRPCPayload() payr.load(result) print payr.getPayload() payload.setRequest('removeObject',[payr.get('result'), 'manfred']) websock.send(payload.getPacket()) result = websock.recv() print result payr = JsonRPCPayload() payr.load(result) print payr.getPayload() #CREATE OBJECT DIR print '######CREATE OBJECT DIR######' payload = JsonRPCPayload() payload.setRequest('access', ['momo3','/','manfred']) print type(payload) websock.send(payload.getPacket())
print payr.getPayload() #DELETE OBJECT print '######DELETE OBJECT######' payload = JsonRPCPayload() payload.setRequest('access', ['momo3', '/ciao2.txt', 'manfred']) print type(payload) websock.send(payload.getPacket()) result = websock.recv() print result payr = JsonRPCPayload() payr.load(result) print payr.getPayload() payload.setRequest('removeObject', [payr.get('result'), 'manfred']) websock.send(payload.getPacket()) result = websock.recv() print result payr = JsonRPCPayload() payr.load(result) print payr.getPayload() #CREATE OBJECT DIR print '######CREATE OBJECT DIR######' payload = JsonRPCPayload() payload.setRequest('access', ['momo3', '/', 'manfred']) print type(payload) websock.send(payload.getPacket()) result = websock.recv()