NPDD/Baobáxia/Arquitetura

(Diferença entre revisões)
Ir para: navegação, pesquisa
(configuração dos repositorios)
m (API / Rotas de acesso)
(16 edições intermediárias de 2 usuários não apresentadas)
Linha 1: Linha 1:
 
== Configuração do Repositório ==
 
== Configuração do Repositório ==
# configuração da dpadua
+
 
+
# configuração da dpadua  
 
  # mkdir /data/repositories
 
  # mkdir /data/repositories
 
  # mkdir /data/repositories/mocambos
 
  # mkdir /data/repositories/mocambos
Linha 14: Linha 14:
 
  $ git annex init dpadua
 
  $ 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 ==
 
== Sincronização ==
Linha 42: Linha 98:
 
* repositorio (acervo, bruto, outras redes)
 
* repositorio (acervo, bruto, outras redes)
 
* etiqueta
 
* etiqueta
 
  
 
==== API / Rotas de acesso ====
 
==== API / Rotas de acesso ====
  
 +
<pre>
 +
# 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
 +
</pre>
 +
 +
===== proposta 22/01/14 =====
 +
(ANTIGA)
 
Nova proposta das rotas, padronizando no esquema REST (22/01/2014)
 
Nova proposta das rotas, padronizando no esquema REST (22/01/2014)
  

Edição das 15h38min de 16 de setembro de 2014

Conteúdo

Configuração do Repositório

  1. 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
  1. fazer no acotirene
$ git clone --bare ssh://dpadua...
$ git remote rm origin
  1. 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
Ferramentas pessoais
Espaços nominais
Variantes
Ações
Navegação
Ferramentas
Rede Mocambos