Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
A buildout to run and develop the nsi.cloudooomanager package
Python Shell
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
docs
etc
profiles
templates
tests
utils
Makefile
README.rst
bootstrap.py
buildout.cfg
develop.cfg

README.rst

CloudoooManager Buildout

Sistema operacional

Todos os serviços são desenvolvidos sob o sistema operacional Debian 6 (Squeeze) 64 bits e seu funcionamento só é garantido em tal sistema operacional.

Dependências do sistema

Para o funcionamento do serviço, é necessário que os seguintes pacotes estejam instalados no sistema: python-dev, python-setuptools, python-webunit, libxml2-dev, libxslt1-dev, python-docutils, gnuplot, e python-opencv.

Durante a instalação do serviço, ao executar o comando make, todas essas dependências serão devidamente instaladas.

IMPORTANTE: este buildout depende do servicequeue_buildout e do sam_buildout devidamente configurados e funcionando.

Arquitetura

Como pode ser visto no pacote "nsi.cloudooo" o sistema consiste em um webservice RESTful hostiado por padrão na porta 8886 na url "http://localhost:8886/". Ele responde aos verbos POST e GET. Cada verbo correspondendo a uma ação do serviço de granularização: POST para submeter um documento, GET para verificar o estado da granularização. Todos os verbos recebem parâmetros no formato "json", para melhor interoperabilidade com qualquer outra ferramenta.

POST
Recebe em um parâmetro "doc" o documento a ser convertido codificado em base64, para evitar problemas de encoding. Responde a requisição com as chaves onde estarão os grãos correspondentes a ele no SAM. Todos os grão são armazenados na forma de dicionário, contendo o grão em si na chave "file" e o nome do arquivoo do grão na chave "filename". Também pode-se passar um link para o documento, no parâmetro "doc_link", ou até mesmo a chave de um documento pré-armazenado no SAM, no parâmetro "sam_uid". No último caso, o documento precisa estar armazenado seguindo a estrutura {"file":documento}. É possível enviar uma URL para receber um "callback" assim que o documento for convertido. Caso o parâmetro "callback" seja fornecido, ao término da conversão, um dos workers realizará uma requisição para tal URL com o verbo POST, fornecendo no corpo dela uma chave "doc_key", que é a chave do documento, "done" com valor verdadeiro e a chave "grains_keys", com a chave para acesso aos grãos, que estarão organizados em "images" e "files" (grãos do tipo tabela). Caso aconteça algum problema durante a granularização do documento, no callback a chave "done" terá valor falso e haverá uma chave "error" com valor verdadeiro, além da chave do documento, "doc_key". O sistema responde com a chave do documento, "doc_key", que pode ser usada para verificar se o processo daquele documento já foi concluído e também para acessar as chaves onde cada grão dele foi armazenado no SAM. É possível fazer a extração dos metadados de um documento, basta passar a chave do SAM onde ele está armazenado no parâmetro "sam_uid" e também um parâmetro "metadata" com valor booleano verdadeiro. Os metadados do documento serão extraídos e armazenados no SAM.
GET
Também é possível receber se um determinado documento já foi convertido fazendo uma requisição do tipo GET para o servidor, passando como parâmetro "key" a chave do documento que é retornada pelo método POST. O retorno será uma chave "done", com valor verdadeiro caso os grão estejam prontos, e falso para o contrário. Além disso, ele pode ser usado para ter acesso às chaves dos grãos referentes ao documento, caso seja passado um único parâmetro "doc_key" na requisição. Seu retorno será um dicionário contendo as chaves de acesso para cada grão, separadas nas chaves "images" e "files" do dicionário. Para acessar a chave dos metadados de um documento, basta fazer a mesma requisição, porém com um parâmetro adicional "metadata" com valor booleano verdadeiro.

Bibliotecas

  • Cyclone

Cyclone é um fork do Tornado, um webserver criado originalmente pelo FriendFeed, que foi comprado pelo Facebook mais tarde e teve seu código aberto. É baseado no Twisted e tem suporte a bancos noSQL, como MongoDB e Redis, XMLRPC e JsonRPC, além de um cliente HTTP assíncrono.

  • txredisapi

É uma API que promove acesso assíncrono ao banco de dados Redis, feita em cima do Twisted.

  • nsi.multimedia

API criada pelo próprio NSI para granularização de documentos usando o Cloudooo.

  • nsi.metadataextractor

API criada pelo próprio NSI para a extração de metadados de documentos.

Instalação

Assumindo que o SAM já está devidamente instalado e iniciado na máquina, criar um ambiente virtual usando Python 2.6, sem a opção no-site-packages e com o mesmo ativado executar “make” na pasta do buildout.

Executando

Na pasta do buildout do SAM, executar: “bin/samctl start”, adicionar um usuário para o CloudoooManager com: “bin/add-user.py test test” e na pasta do buildout do CloudoooManager executar: “bin/cloudooomanager_ctl start”.

É indispensável que o serviço de filas esteja ligado para que tudo funciona perfeitamente. Para instalar o serviço de filas basta baixar o servicequeue_buildout e rodar o utilitário make contido nele. Depois, basta executar o comando bin/rabbitmq-server -detached para ativar o serviço de filas.

Tudo deverá estar funcionando normalmente (caso contrário me mande um e-mail).

Rodando os testes

Com o SAM em execução, adicionar o usuário “test”, com senha “test” nele utilizando: “bin/add-user.py test test”. Depois na raiz do buildout do VideoConvert executar: “make test”.

Se o serviço se estiver rodando e não for viável pará-lo para rodar os testes, basta utilizar o script executável disponível na pasta "utils", que é gerado após o buildout se executado.

Testes de carga

Com o serviço de armazenamento (SAM) rodando e com o usuário "test", com senha "test", basta executar make load_test para rodar os testes de carga. Automaticamente, depois que o teste terminar, um relatório em HTMl será gerado na pasta tests/funkload_report com informações e gráficos relevantes sobre o tete.

Para alterar configurações do servidor de granularização e do teste de carga, ver arquivo tests/CloudoooManagerBench.conf.

Something went wrong with that request. Please try again.