NPDD/Baobáxia/Arquitetura

De Rede Mocambos
< NPDD | Baobáxia
Edição feita às 14h52min de 22 de janeiro de 2014 por Fernao (disc | contribs)
Ir para: navegação, pesquisa

Conteúdo

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

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