Exemple #1
0
    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
Exemple #2
0
    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
Exemple #3
0
 def _parseWbSMessage(self, data):
     self.wbsRequest = JsonRPCPayload()
     try:
         self.wbsRequest.load(data)
     except JsonRPCError as e:
         response = JsonRPCPayload(rpcid=None)
         response.setError(e.code, e.errorString)
         self.write_message(
             response.getPacket(self.application.rpc_encode_type))
Exemple #4
0
 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')
Exemple #5
0
 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')      
Exemple #6
0
    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 on_message(self, message):
        print "on_message"
        # TODO - Use the multiprocessing and skip the response if
        # it is a notification
        # Put in support for custom dispatcher here
        # (See SimpleXMLRPCServer._marshaled_dispatch)
        self._parseWbSMessage(message)
        method = self.wbsRequest.get('method')
        params = self.wbsRequest.get('params')
        response = JsonRPCPayload()
        print method
        print params

        result = ''
        try:
            print "invoco DATA"
            result = self._dispatch(method, params)
            print "eseguito DATA"
            print result

        except Exception, e:

            response.setError(e.errorCode, e.errorString,
                              self.wbsRequest.get('id'))
            self.write_message(
                response.getPacket(self.application.rpc_encode_type))
            return
Exemple #8
0
 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')  
Exemple #9
0
 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')  
Exemple #10
0
 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')   
Exemple #11
0
 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')
Exemple #12
0
 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')
Exemple #13
0
 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')
Exemple #14
0
 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')     
Exemple #15
0
 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')
Exemple #16
0
 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')
Exemple #17
0
 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')   
Exemple #18
0
 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')
Exemple #19
0
 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')     
Exemple #20
0
 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')
Exemple #21
0
 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')
Exemple #22
0
 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      
Exemple #23
0
 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  
Exemple #24
0
 def readBlock(self, bucket, idObj, key, bhash, uid=None, gid=None, context=None):
     self._LOGGER.info("Reading Block ")
     if self._LOGGER.getEffectiveLevel() == 10:
         self._ourDebug(bucket, idObj,key,bhash,uid, gid , context) 
     item = self.cacheMng.readBlock(bucket, idObj, key, bhash)
     if item:
         self.srv_num_get += 1
         self._LOGGER.info("Founded in cache, returning it ") 
         return item
     self.srv_num_get_failed += 1
     self._LOGGER.info("NOT Founded in cache, writing it ") 
     msg = JsonRPCPayload('readBlock',[bucket,idObj, key, uid, gid,context])
     item = self._sendDataBinary(msg)
     self.srv_num_set += 1
     self.cacheMng.writeBlock(bucket, idObj, key, bhash, item)
     return item
Exemple #25
0
    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
Exemple #26
0
        payr = JsonRPCPayload()
        payr.load(result)
        print payr.getPayload()

        payload.setRequest('getObjectList',[payr.get('result') , ''])
        websock.send(payload.getPacket())
        result =  websock.recv()
        print result
        payr = JsonRPCPayload()
        payr.load(result)
        print payr.getPayload()'''

        print '################'
        print 'CREATE BUCKET'

        payload = JsonRPCPayload()
        payload.setRequest('createBucket', ['ziocane', '', '', ''])
        print 'invio', payload.getPacket()
        websock.send(payload.getPacket())
        result = websock.recv()
        print 'result', result
        payr = JsonRPCPayload()
        payr.load(result)
        print 'payr', payr.getPayload()

        #CREATE BUCKET
        print '######CREATE BUCKET######'

        payload = JsonRPCPayload()
        payload.setRequest('createBucket', ['nuovoBucket', '', '', 'manfred'])
        print 'invio', payload.getPacket()
Exemple #27
0
 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')
Exemple #28
0
 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')