Example #1
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')  
Example #2
0
    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
Example #3
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')   
Example #4
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')  
Example #5
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')
Example #6
0
    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
Example #7
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 
Example #8
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')      
Example #9
0
class WbSHandler(WbSBaseHandler):
    wbsRequest = None
    
    
    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))
            
        
      
    def _findServiceEndpoint(self, name):
        meth = None
        
        try:
            meth = getattr(self.service, name)
            if hasattr(meth, "rpcmethod"):
                return meth
            else:
                return None
             
        except AttributeError:
            return None


    def _dispatch(self, method, params):
      
        func = self._findServiceEndpoint(method)
       
        response = ''
        if func is not None:
            try:
                if type(params) is types.ListType:
                   
                    if params[0] != '':
                        response = func(*params)
                    else:
                        pass
                else:
                    response = func(**params)
                return response
            except TypeError:
                err_lines = traceback.format_exc().splitlines()
                trace_string = '%s | %s' % (err_lines[-3], err_lines[-1])
                exc_type, exc_value, exc_tb = sys.exc_info()
                
                raise JsonRPCError(-32602, 'Invalid parameters: %s' %  trace_string)
            except:
                err_lines = traceback.format_exc().splitlines()
                trace_string = '%s | %s' % (err_lines[-3], err_lines[-1])
                raise JsonRPCError(-32603, 'Server error: %s' % 
                                         trace_string)

        else:
            raise JsonRPCError(-32601, 'Method %s not supported.' % method)
Example #10
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')
Example #11
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))
Example #12
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')
Example #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')
Example #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')     
Example #15
0
class WbSHandler(WbSBaseHandler):
    wbsRequest = None

    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))

    def _findServiceEndpoint(self, name):
        meth = None

        try:
            meth = getattr(self.service, name)
            if hasattr(meth, "rpcmethod"):
                return meth
            else:
                return None

        except AttributeError:
            return None

    def _dispatch(self, method, params):

        func = self._findServiceEndpoint(method)

        response = ''
        if func is not None:
            try:
                if type(params) is types.ListType:

                    if params[0] != '':
                        response = func(*params)
                    else:
                        pass
                else:
                    response = func(**params)
                return response
            except TypeError:
                err_lines = traceback.format_exc().splitlines()
                trace_string = '%s | %s' % (err_lines[-3], err_lines[-1])
                exc_type, exc_value, exc_tb = sys.exc_info()

                raise JsonRPCError(-32602,
                                   'Invalid parameters: %s' % trace_string)
            except:
                err_lines = traceback.format_exc().splitlines()
                trace_string = '%s | %s' % (err_lines[-3], err_lines[-1])
                raise JsonRPCError(-32603, 'Server error: %s' % trace_string)

        else:
            raise JsonRPCError(-32601, 'Method %s not supported.' % method)
Example #16
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')   
Example #17
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')
Example #18
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')
Example #19
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')
Example #20
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')     
Example #21
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')
Example #22
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')
Example #23
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      
Example #24
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  
Example #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 
Example #26
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))
Example #27
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
Example #28
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
Example #29
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
Example #30
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
Example #31
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')
Example #32
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')      
Example #33
0
        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()
Example #34
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()