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