Ejemplo n.º 1
0
def edit_host(user_id, host_id, hostname, servs):
    """Edits the given host."""
    user_id = str(user_id)
    host_id = str(host_id)
    if host_id in red.smembers(_KEY_USER_HOSTS.format(user_id)):
        pip = red.pipeline()
        pip.hset(_KEY_HOST.format(host_id), _ATTR_HOST_NAME, hostname)
        saved_servs = red.smembers(_KEY_HOST_SET_SERVS.format(host_id))
        # Remove all
        pip.delete(_KEY_HOST_SET_SERVS.format(host_id))
        for serv in saved_servs:
            if red.scard(_KEY_SERVNAME_HOSTS.format(serv)) == 1:
                pip.delete(_KEY_SERVNAME_HOSTS.format(serv))
                pip.srem(_KEY_SERVS, serv)
            else:
                pip.srem(_KEY_SERVNAME_HOSTS.format(serv), host_id)
        # create new associated servs
        for serv in servs:
            pip.sadd(_KEY_HOST_SET_SERVS.format(host_id), serv)
            pip.sadd(_KEY_SERVNAME_HOSTS.format(serv), host_id)
            pip.sadd(_KEY_SERVS, serv)
        pip.execute()
        return (True, 'Everything went fine!')
    else:
        return (False, 'Unknown host for the given user.')
Ejemplo n.º 2
0
def delete_network(user_id, net_id):
    """Deletes a network."""
    pip = red.pipeline()
    user_id = str(user_id)
    net_id = str(net_id)
    pip.delete(_KEY_NET.format(net_id))
    pip.srem(_KEY_NETS_USER.format(user_id), net_id)
    # Delete associated events
    events = get_user_events_network(user_id, net_id)
    for event in events:
        pip.lrem(_KEY_EVENTS_USER_DATE.format(user_id, event['date']), 0,
                 event['id'])
        pip.delete(_KEY_EVENT_USER.format(event['id'], user_id))
    pip.delete(_KEY_EVENTS_USER_NET.format(user_id, net_id)) # user-network
    # Delete associated entries on wb lists
    for entry in get_entries_network(net_id):
        # delete network from the entry, if it has one network delete entry
        if red.scard(_KEY_ENTRY_SET_NETS.format(entry['id'])) == 1:
            pip.delete(_KEY_ENTRY.format(entry['id']))
            # delete from w or b list of entries
            if entry['type'] == 'B':
                pip.srem(_KEY_ENTRY_BLACK_USER.format(user_id), entry['id'])
            else:
                pip.srem(_KEY_ENTRY_WHITE_USER.format(user_id), entry['id'])
        pip.srem(_KEY_ENTRY_SET_NETS.format(entry['id']), 0, net_id)
    pip.execute()
    # Search for associated api keys to this network
    apik_ids = red.smembers(_KEY_APIKS_USER.format(user_id))
    for apik in apik_ids:
        tmp = red.hgetall(_KEY_APIK.format(apik))
        if tmp and tmp['network'] == net_id:
            _delete_api_key(user_id, apik)
Ejemplo n.º 3
0
def delete_host(user_id, host_id):
    """Deletes a host"""
    user_id = str(user_id)
    host_id = str(host_id)
    pip = red.pipeline()
    pip.srem(_KEY_USER_HOSTS.format(user_id), host_id)
    pip.delete(_KEY_HOST.format(host_id))
    servs = red.smembers(_KEY_HOST_SET_SERVS.format(host_id))
    for serv in servs:
        if red.scard(_KEY_SERVNAME_HOSTS.format(serv)) == 1:
            pip.delete(_KEY_SERVNAME_HOSTS.format(serv))
            pip.srem(_KEY_SERVS, serv)
        else:
            pip.srem(_KEY_SERVNAME_HOSTS.format(serv), host_id)
    red.delete(_KEY_HOST_SET_SERVS.format(host_id))
    pip.execute()
Ejemplo n.º 4
0
def get_count_user_networks(user_id):
    """Returns the number of nets. a user has."""
    length = red.scard(_KEY_NETS_USER.format(str(user_id)))
    return length if length is not None else 0