Example #1
0
 def __init__(
     self,
     client,
     bucket_name,
     bucket_type,
     search_index,
     struct
 ):
     '''
         Team map structure
     '''
     bucket = client.bucket_type(bucket_type).bucket('{0}'.format(bucket_name))
     bucket.set_properties({'search_index': search_index})
     self.map = Map(bucket, None)
     # start of map structure
     self.map.registers['uuid'].assign(struct.get('uuid', ''))
     self.map.registers['account'].assign(struct.get('account', ''))
     self.map.registers['status'].assign(struct.get('status', ''))
     self.map.registers['name'].assign(struct.get('name', ''))
     self.map.registers['description'].assign(struct.get('description', ''))
     self.map.registers['resources'].assign(struct.get('resources', ''))
     self.map.registers['permissions'].assign(struct.get('permissions', ''))
     self.map.registers['members'].assign(struct.get('members', ''))
     self.map.registers['labels'].assign(struct.get('labels'))
     self.map.registers['history'].assign(struct.get('history', ''))
     self.map.registers['checked'].assign(struct.get('checked', ''))
     self.map.registers['checked_by'].assign(struct.get('checked_by', ''))
     self.map.registers['checked_at'].assign(struct.get('checked_at', ''))
     self.map.registers['created_by'].assign(struct.get('created_by', ''))
     self.map.registers['created_at'].assign(struct.get('created_at', ''))
     self.map.registers['last_update_by'].assign(struct.get('last_update_by', ''))
     self.map.registers['last_update_at'].assign(struct.get('last_update_at', ''))
     # end of the map stuff
     self.map.store()
Example #2
0
 def __init__(self, client, bucket_name, bucket_type, search_index, struct):
     '''
         File map structure
     '''
     bucket = client.bucket_type(bucket_type).bucket(
         '{0}'.format(bucket_name))
     bucket.set_properties({'search_index': search_index})
     self.map = Map(bucket, None)
     # start of map structure
     self.map.registers['uuid'].assign(struct.get('uuid', ''))
     self.map.registers['url'].assign(struct.get('url', ''))
     self.map.registers['account'].assign(struct.get('account', ''))
     self.map.registers['checksum'].assign(struct.get('checksum', ''))
     self.map.registers['head'].assign(struct.get('head', ''))
     self.map.registers['payload'].assign(struct.get('payload', ''))
     self.map.registers['public'].assign(struct.get('public', ''))
     self.map.registers['labels'].assign(struct.get('labels', ''))
     self.map.registers['hashes'].assign(struct.get('hashes', ''))
     self.map.registers['chunks'].assign(struct.get('chunks', ''))
     self.map.registers['status'].assign(struct.get('status', ''))
     self.map.registers['created_by'].assign(struct.get('created_by', ''))
     self.map.registers['created_at'].assign(struct.get('created_at', ''))
     self.map.registers['updated'].assign(struct.get('updated', ''))
     self.map.registers['last_update_by'].assign(
         struct.get('last_update_by', ''))
     self.map.registers['last_update_at'].assign(
         struct.get('last_update_at', ''))
     self.map.registers['checked'].assign(struct.get('checked', ''))
     self.map.registers['checked_by'].assign(struct.get('checked_by', ''))
     self.map.registers['checked_at'].assign(struct.get('checked_at', ''))
     self.map.registers['active'].assign(struct.get('active', ''))
     self.map.registers['watchers'].assign(struct.get('watchers', ''))
     # end of the map stuff
     self.map.store()
Example #3
0
    def modify_team(self, account, team_uuid, struct):
        '''
            Modify team
        '''
        # riak search index
        search_index = 'mango_team_index'
        # riak bucket type
        bucket_type = 'mango_team'
        # riak bucket name
        bucket_name = 'teams'
        # solr query
        query = 'uuid_register:{0}'.format(team_uuid.rstrip('/'))
        # filter query
        filter_query = 'account_register:{0}'.format(account.decode('utf-8'))
        # search query url
        url = "https://{0}/search/query/{1}?wt=json&q={2}&fq={3}".format(
            self.solr, search_index, query, filter_query)
        logging.warning(url)

        # pretty please, ignore this list of fields from database.
        IGNORE_ME = ("_yz_id", "_yz_rk", "_yz_rt", "_yz_rb", "checked",
                     "keywords")
        # got http callback response
        got_response = []
        # default return message
        message = {'update_complete': False}

        def handle_request(response):
            '''
                Request Async Handler
            '''
            if response.error:
                logging.error(response.error)
                got_response.append({'error': True, 'message': response.error})
            else:
                got_response.append(json.loads(response.body))

        try:
            http_client.fetch(url, callback=handle_request)
            while len(got_response) == 0:
                # don't be careless with the time.
                yield gen.sleep(0.0010)
            response = got_response[0].get('response')['docs'][0]
            riak_key = str(response['_yz_rk'])
            bucket = self.kvalue.bucket_type(bucket_type).bucket(
                '{0}'.format(bucket_name))
            bucket.set_properties({'search_index': search_index})
            team = Map(bucket, riak_key)
            # TODO: measure if there is value on make update_struct a yielding coroutine!
            message['update_complete'] = update_struct(team, struct, IGNORE_ME)
        except Exception as error:
            logging.exception(error)
        return message.get('update_complete', False)
Example #4
0
 def __init__(self, client, bucket_name, bucket_type, search_index, struct):
     '''
         Task map structure
     '''
     bucket = client.bucket_type(bucket_type).bucket(
         '{0}'.format(bucket_name))
     bucket.set_properties({'search_index': search_index})
     self.map = Map(bucket, None)
     # start of map structure
     self.map.registers['uuid'].assign(struct.get('uuid', ''))
     self.map.registers['account'].assign(struct.get('account', ''))
     self.map.registers['subject'].assign(struct.get('subject', ''))
     self.map.registers['description'].assign(struct.get('description', ''))
     self.map.registers['data'].assign(struct.get('data', ''))
     self.map.registers['assign'].assign(struct.get('assign', ''))
     self.map.registers['public'].assign(struct.get('public', ''))
     self.map.registers['source '].assign(struct.get('source', ''))
     self.map.registers['destination'].assign(struct.get('destination', ''))
     self.map.registers['labels'].assign(struct.get('labels'))
     self.map.registers['start_time'].assign(struct.get('start_time', ''))
     self.map.registers['ack_time'].assign(struct.get('ack_time', ''))
     self.map.registers['stop_time'].assign(struct.get('stop_time', ''))
     self.map.registers['deadline'].assign(struct.get('deadline', ''))
     self.map.registers['duration'].assign(struct.get('duration', ''))
     self.map.registers['comments'].assign(struct.get('comments', ''))
     self.map.registers['history'].assign(struct.get('history', ''))
     self.map.registers['status'].assign(struct.get('status', ''))
     self.map.registers['checked'].assign(struct.get('checked', ''))
     self.map.registers['checked_by'].assign(struct.get('checked_by', ''))
     self.map.registers['checked_at'].assign(struct.get('checked_at', ''))
     self.map.registers['created_by'].assign(struct.get('created_by', ''))
     self.map.registers['created_at'].assign(struct.get('created_at', ''))
     self.map.registers['last_update_by'].assign(
         struct.get('last_update_by', ''))
     self.map.registers['last_update_at'].assign(
         struct.get('last_update_at', ''))
     # end of the map stuff
     self.map.store()
Example #5
0
    def modify_remove(self, account, task_uuid, struct):
        '''
            Modify remove
        '''
        # riak search index
        search_index = 'mango_task_index'
        # riak bucket type
        bucket_type = 'mango_task'
        # riak bucket name
        bucket_name = 'tasks'
        # solr query
        query = 'uuid_register:{0}'.format(task_uuid.rstrip('/'))
        # filter query
        filter_query = 'account_register:{0}'.format(account.decode('utf-8'))
        # search query url
        url = "https://{0}/search/query/{1}?wt=json&q={2}&fq={3}".format(
            self.solr, search_index, query, filter_query)
        # pretty please, ignore this list of fields from database.
        # if you want to include something in here, remember the _register.
        # example: labels_register.
        IGNORE_ME = ("_yz_id", "_yz_rk", "_yz_rt", "_yz_rb")
        # got callback response?
        got_response = []
        # yours truly
        message = {'update_complete': False}

        def handle_request(response):
            '''
                Request Async Handler
            '''
            if response.error:
                logging.error(response.error)
                got_response.append({'error': True, 'message': response.error})
            else:
                got_response.append(json.loads(response.body))

        try:
            http_client.fetch(url, callback=handle_request)
            while len(got_response) == 0:
                # Please, don't be careless with the time.
                yield gen.sleep(0.0010)
            response = got_response[0].get('response')['docs'][0]
            riak_key = str(response['_yz_rk'])
            bucket = self.kvalue.bucket_type(bucket_type).bucket(
                '{0}'.format(bucket_name))
            bucket.set_properties({'search_index': search_index})
            task = Map(bucket, riak_key)
            for key in struct:
                if key not in IGNORE_ME:
                    if type(struct.get(key)) == list:
                        task.reload()
                        old_value = task.registers['{0}'.format(key)].value
                        if old_value:
                            old_list = json.loads(old_value.replace("'", '"'))
                            new_list = [
                                x for x in old_list if x not in struct.get(key)
                            ]
                            task.registers['{0}'.format(key)].assign(
                                str(new_list))
                            task.update()
                            message['update_complete'] = True
                    else:
                        message['update_complete'] = False
        except Exception as error:
            logging.exception(error)
        return message.get('update_complete', False)
Example #6
0
 def modify_file(self, account, file_uuid, struct):
     '''
         Modify file
     '''
     # riak search index
     search_index = 'sloth_file_index'
     # riak bucket type
     bucket_type = 'sloth_file'
     # riak bucket name
     bucket_name = 'files'
     # solr query
     query = 'uuid_register:{0}'.format(file_uuid.rstrip('/'))
     # filter query
     filter_query = 'account_register:{0}'.format(account.decode('utf-8'))
     # search query url
     url = "https://{0}/search/query/{1}?wt=json&q={2}&fq={3}".format(
         self.solr, search_index, query, filter_query
     )
     logging.warning(url)
     # pretty please, ignore this list of fields from database.
     IGNORE_ME = ("_yz_id","_yz_rk","_yz_rt","_yz_rb","checked","keywords")
     # got callback response?
     got_response = []
     # yours truly
     message = {'update_complete':False}
     def handle_request(response):
         '''
             Request Async Handler
         '''
         if response.error:
             logging.error(response.error)
             got_response.append({'error':True, 'message': response.error})
         else:
             got_response.append(json.loads(response.body))
     try:
         http_client.fetch(
             url,
             callback=handle_request
         )
         while len(got_response) == 0:
             # don't be careless with the time.
             yield gen.sleep(0.0010)
         response = got_response[0].get('response')['docs'][0]
         riak_key = str(response['_yz_rk'])
         bucket = self.kvalue.bucket_type(bucket_type).bucket('{0}'.format(bucket_name))
         bucket.set_properties({'search_index': search_index})
         file = Map(bucket, riak_key)
         for key in struct:
             if key not in IGNORE_ME:
                 if type(struct.get(key)) == list:
                     file.reload()
                     old_value = file.registers['{0}'.format(key)].value
                     if old_value:
                         old_list = json.loads(old_value.replace("'",'"'))
                         for thing in struct.get(key):
                             old_list.append(thing)
                         file.registers['{0}'.format(key)].assign(str(old_list))
                     else:
                         new_list = []
                         for thing in struct.get(key):
                             new_list.append(thing)
                         file.registers['{0}'.format(key)].assign(str(new_list))
                 else:
                     file.registers['{0}'.format(key)].assign(str(struct.get(key)))
                 file.update()
         update_complete = True
         message['update_complete'] = True
     except Exception as error:
         logging.exception(error)
     return message.get('update_complete', False)