NPDD/Baobáxia/Arquitetura
m (→API / Rotas de acesso) |
|||
Linha 123: | Linha 123: | ||
/[repo]/[mucua]/addgroup/[groupname] # add mucua to [groupname] | /[repo]/[mucua]/addgroup/[groupname] # add mucua to [groupname] | ||
/[repo]/[mucua]/delgroup/[groupname] # remove mucua from [groupname] | /[repo]/[mucua]/delgroup/[groupname] # remove mucua from [groupname] | ||
− | /[repo]/[mucua]getgroups (sem t:) - todos os grupos da mucua | + | /[repo]/[mucua]/getgroups (sem t:) - todos os grupos da mucua |
/[repo]/[mucua]/getterritory (somente t:) - todos os territórios da mucua | /[repo]/[mucua]/getterritory (somente t:) - todos os territórios da mucua | ||
/mucua/ # get default mucua | /mucua/ # get default mucua |
Edição das 15h38min de 16 de setembro de 2014
Conteúdo |
Configuração do Repositório
- configuração da dpadua
# mkdir /data/repositories # mkdir /data/repositories/mocambos # adduser exu # chown root:exu /data/repositiores/mocambos # chmod 775 root:exu /data/repositiores/mocambos # su exu $ cd /data/repositories/mocambos $ git config --global user.name "Exu do BBX" $ git config --global user.email exu@mocambos.org $ git init . $ git annex init dpadua
- fazer no acotirene
$ git clone --bare ssh://dpadua... $ git remote rm origin
- no dpadua
$ cd /data/repositiores/mocambos $ mkdir dpadua $ mkdir dpadua/mocambolas
django-bbx no debian com Gunicorn + Supervisord + Nginx
http://michal.karzynski.pl/blog/2013/06/09/django-nginx-gunicorn-virtualenv-supervisor/
instalação do baobaxia na mucua dpadua
$ su exu $ cd /srv $ git clone http://github.com/RedeMocambos/baobaxia $ cd baobaxia $ sudo su # apt-get install pip-python # pip install virtualenv # mkdir /srv/envs # chown root:exu /srv/envs # chmod 775 envs # sqlite
criar virtualenv
# su exu $ cd /srv/envs $ virtualenv bbx $ source /srv/envs/bbx/bin/activate $ pip install -r /srv/baobaxia/app/django-bbx/requirements.txt
configurar settings.py
$ python manage.py syncdb - (primeira vez vai dar erro)
criar conta de email admin do django
exu@[nomemucua].mocambos.net email: exu@mocambos.org
fixtures das mucuas:
$ python manage.py syncdb --no-input $ python manage.py migrate --all
Gunicorn
# chmod +x /srv/baobaxia/app/django-bbx/bin/guinicorn_start.sh #
Nginx
# apt-get install nginx
Supervisor
# apt-get install supervisor
Sincronização
O git-annex implementa umas serie de funcionalidades que podem ser reaproveitadas para a logica de sincronização e triagem dos conteúdos.
Em especial o BBX faz uso dos grupos e das policias de "preferred content" como base de comunicação, dessa forma:
Grupos
Grupo | Numero de copias | Notas |
---|---|---|
nucleo | 3 | Cada conteudo è disponivel por padrao em 3 mucuas (as mais proximas por conexão seja fisica ou internet) |
sync | 2 | Para garantis o transito dos conteudos, mantem o dado em pelo menos duas mucuas moveis. |
online | 1 | Disponibilidade para babilonia ;) |
Backend
Para identificar os arquivos no sistema temos o SHA / CHAVES que o git-annex gera.
Middleware
Temos dois entidades/objetos:
- mucua
- media
- usuario
- repositorio (acervo, bruto, outras redes)
- etiqueta
API / Rotas de acesso
# autenticacao /login /[repo]/[mucua]/login /logout /[repo]/[mucua]/logout /register /[repo]/[mucua]/register /lost_password /[repo]/[mucua]/lost_password # mocambola /[repo]/[mucua]/mocambola/[user] {get} # get mocambola (profile) /[repo]/[mucua]/mocambola/[user] {put, delete} # update/delete mocambola (edit) # mucua /[repo]/[mucua] {get} # home da mucua /[repo]/[mucua] {put} # atualiza /[repo]/[mucua]/info # ver + infos sobre a mucua /[repo]/[mucua]/requests # ver requisições da mucua /[repo]/[mucua]/addgroup/[groupname] # add mucua to [groupname] /[repo]/[mucua]/delgroup/[groupname] # remove mucua from [groupname] /[repo]/[mucua]/getgroups (sem t:) - todos os grupos da mucua /[repo]/[mucua]/getterritory (somente t:) - todos os territórios da mucua /mucua/ # get default mucua /mucua/list # get list of mucuas # home da rede /rede /rede/info # funcionalidades media /[repo]/[mucua]/media {post} # insere media /[repo]/[mucua]/media/[uuid] {get} # get media /[repo]/[mucua]/media/[uuid] {put, delete} # update/delete media /[repo]/[mucua]/media/last {get} # pega últimas medias adicionadas /[repo]/[mucua]/media/[uuid]/url # pega url (web/api) do arquivo /[repo]/[mucua]/media/[uuid]/[width]x[height].[format] # get image of media /[repo]/[mucua]/media/[uuid]/related # get related media to [uuid] # funcionalidades básicas para definição de escopo /repository/list # lista repositorios disponíveis (buggy) /repository/* # get default repository /[repository]/mucuas # get mucuas /[repo]/getterritories - todos os territórios dentro do repositório atual /[repo]/getgroups - todos os grupos dentro do repositório atual # busca /[repo]/[mucua]/bbx/search/[arg1]/[arg2]/.../[sortby]/[sort1]/[asc|desc]/[sort2].../[limit]/[num]/[offset] # busca por args
proposta 22/01/14
(ANTIGA)
Nova proposta das rotas, padronizando no esquema REST (22/01/2014)
# sufixo de [localização] /[repo]/[mucua] # mucua /[repo]/[mucua]/mucua # get data from mucua # mocambola /[repo]/[mucua]/mocambola/[user] {get} # get mocambola /[repo]/[mucua]/mocambola/[user] {put, delete} # update/delete mocambola # funcionalidades media /[repo]/[mucua]/media {post} # insere media /[repo]/[mucua]/media/[uuid] {get} # get media /[repo]/[mucua]/media/[uuid] {put, delete} # update/delete media /[repo]/[mucua]/media/last {get} # pega últimas medias adicionadas # funcionalidades bbx /[repo]/[mucua]/bbx/[comando]/[args] /[repo]/[mucua]/bbx/localsync # sync direto /[repo]/[mucua]/bbx/netsync # sync net /[repo]/[mucua]/bbx/syncqueue # mostra lista de sync /[repo]/[mucua]/bbx/init # inicializa mucua /[repo]/[mucua]/bbx/remote {post, put, delete) # add/update/del git remote /[repo]/[mucua]/bbx/viewmucuas {get} # lista mucuas /[repo]/[mucua]/bbx/diffmucuas/:mucua2 {get} # diff mucuaatual/mucua2) # funcionalidades básicas para definição de escopo /repository/list # lista repositorios disponíveis /repository/* # get default repository /[repo]/mucuas # get mucuas /mucua/ # get default mucua /mucua/list # get list of mucuas # busca /[repo]/[mucua]/bbx/search/[arg1]/[arg2]/... # busca por args # admin / usuário /[repo]/[mucua]/login /login /logout /admin/[...]
API / Rotas de acesso (proposta anterior)
Outra proposta sobre as rotas, simplificada, do ponto de vista da API:
# sufixo de [localização] /[repo]/[nomemucua] # mucua /[repo]/local # alias para [mucua] /[repo]/externo # mucuas externas /[repo]/rede # todas mucuas # funcionalidades media /[repo]/[localizacao]/media {post} # insere media (media_detail) /[repo]/[localizacao]/media/[uuid] {get} # get media (media_list) /[repo]/[localizacao]/media/[uuid] {put, delete} # update/delete media (media_detail) # funcionalidades bbx /[repo]/[localizacao]/bbx/[comando]/[args] /[repo]/[localizacao]/bbx/localsync # sync direto /[repo]/[localizacao]/bbx/netsync # sync net /[repo]/[localizacao]/bbx/syncqueue # mostra lista de sync /[repo]/[localizacao]/bbx/init # inicializa mucua /[repo]/[localizacao]/bbx/remote {post, put, delete) # add/update/del git remote /[repo]/[localizacao]/bbx/viewmucuas {get} # lista mucuas /[repo]/mucuaatual/bbx/diffmucuas/:mucua2 {get} # diff mucuaatual/mucua2) # busca /[repo]/[localizacao]/bbx/search/[arg1]/[arg2]/... # busca por args # admin / usuário /[repo]/[localizacao]/login /login /logout /admin/[...]
Listagem anterior da API / Rotas
Abaixo, listamos um rascunho dos links de acesso a fucionalidades. O texto abaixo é um exercício de listar caminhos, acesso a funções e variáveis.
/[repositorio]/[mucua] /[repositorio]/local (alias pra mucua atual) /[repositorio]/externo (alias para outras mucuas exceto atual) /[repositorio]/rede (todos) /[repositorio]/kalakuta /mocambos/local/ /[repositorio]/[mucua]/etiqueta1/etiqueta2/etiqueta3 /[repositorio]/[mucua]/mocambola1/etiqueta1 /[repositorio]/[mucua]/mocambola/mocambola1 /[repositorio]/[mucua]/mocambola/vince/etiqueta/documentário /[repositorio]/[mucua]/etiqueta/documentario/mocambola/vince /[repositorio]/[mucua]/etiqueta/:etiqueta/mocambola/:mocambola /[repositorio]/[mucua]/mocambola/:mocambola/etiqueta/:etiqueta /[repositorio]/[mucua]/etiqueta/:historia/:video /mocambos/[mucua]/bbx/search/q=video&alcântara&encontro (busca geral em todos metadados) /[repositorio]/[mucua]/media/:uuid -> getFile(uuid) {get} /[repositorio]/[mucua]/media/ {post,put,delete} -> publishFile() /[repositorio]/[mucua]/media/cfb8e07e-49ab-489b-a4da-70ff8f715640 -> get(arquivo TAL - hash) /mocambos/[mucua]/bbx/localsync {post} /mocambos/[mucua]/bbx/netsync {post} /mocambos/[mucua]/bbx/syncqueue {post} /mocambos/[mucua]/bbx/init {post} /mocambos/[mucua]/bbx/remote {post, put, delete) /mocambos/[local]/bbx/viewmucuas {get} /mocambos/[externo]/bbx/viewmucuas {get} /mocambos/[mucua]/bbx/diffmucuas/:mucua2 {get} (entre atual e mucua 2) /mocambos/[mucua]/bbx/availability/:qtd {get} /mocambos/taina/bbx/status {taina} -> infos da mucua taina /mocambos/rede/bbx/status {rede} -> infos das mucuas