Tecgraf
24. Janeiro 2017
Este documento visa prover os passos necessários para instalar e levantar um barramento OPENBUS [3] da versão 2.0.0 e executar um demo. Caso tenha interesse em entender melhor o que é um barramento OPENBUS e os detalhes de instalação, consulte o manual de referência [5] e o manual de instalação [4]. Os procedimentos a seguir descrevem a instalação em plataforma Linux (Ubuntu 12.04) utilizando comandos do Bash shell (interpretador de linguagem de comandos) [2] [1]. O demo é em C++, e é executado na mesma máquina do barramento. Para a execução em outras plataformas, de demos em outras linguagens, e utilizando configurações diferentes, é sugerido que se consulte os manuais acima referidos.
https://jira.tecgraf.puc-rio.br/confluence/display/OPENBUS020/Core
$ tar xvzf openbus-core-2.0.0.1-Linux26g4.tar.gz
$ cd ~
$ vi .bashrc
export OPENBUS_HOME=<caminho do openbus-core>
export PATH="${OPENBUS_HOME}/bin:.:${PATH}"
export LD_LIBRARY_PATH="/usr/lib:/lib/i386-linux-gnu:${OPENBUS_HOME}/lib: \
${LD_LIBRARY_PATH}"
export LUA_PATH="${OPENBUS_HOME}/?.lua;${LUA_PATH}"
openssl (a versão deve ser 1.0.0 ou maior). Os arquivos podem ter um nome diferente do sugerido abaixo, desde que o nome do arquivo de chave privada seja passado no parâmetro -privatekey do servidor do barramento (busservices). A validade do certificado em dias (definida pelo modificador -days) também pode ser diferente.
$ cd $OPENBUS_HOME
$ openssl genrsa -out tmp_openssl.key 2048
$ openssl pkcs8 -topk8 -nocrypt \
-in tmp_openssl.key -out openbus.key -outform DER
$ rm -f tmp_openssl.key
$ openssl req -days 3650 -new -x509 \
-key openbus.key -keyform DER \
-out openbus.crt -outform DER
$ cd $OPENBUS_HOME
$ vi validador.lua
local function validator(name, password)
if name == password then
return true
end
end
return function(configs) return validator end
-validator sem a extensão ".lua". A variável de ambiente $LUA_PATH contém o caminho onde o servidor do barramento fará a busca pelo script de validação. Caso o parâmetro -privatekey não seja passado, o servidor do barramento utilizará o nome do arquivo de chave privada padrão (openbus.key). Como não foram passados os parâmetros -host e -port, o servidor do barramento será levantando utilizando a máscara de host e a porta padrão (host="*" port=2089).
$ cd $OPENBUS_HOME $ ./bin/busservices -privatekey openbus.key -admin admin -validator validador
https://jira.tecgraf.puc-rio.br/confluence/display/OPENBUS020/SDK
$ tar xvzf openbus-cpp-mico-2.0.0.0-Linux26g4.tar.gz
$ sudo apt-get install g++ $ sudo apt-get install libstdc++6
$ cd ~
$ vi .bashrc
export PATH="/<caminho do openbus-cpp-mico>/bin:.:${PATH}"
export LD_LIBRARY_PATH="/<caminho do openbus-cpp-mico>/lib:${LD_LIBRARY_PATH}"
export BOOST_ROOT="/<caminho do openbus-cpp-mico>/boost-build"
alias mico-mt='export LD_LIBRARY_PATH="/<caminho do openbus-cpp-mico>/lib/mico-mt: \
${LD_LIBRARY_PATH}";export PATH="/<caminho do openbus-cpp-mico>/bin/mico-mt:${PATH}"'
alias mico-mt-d='export LD_LIBRARY_PATH="/<caminho do openbus-cpp-mico>/lib/mico-mt-d: \
${LD_LIBRARY_PATH}";export PATH="/<caminho do openbus-cpp-mico>/bin/mico-mt-d:${PATH}"'
alias mico-st='export LD_LIBRARY_PATH="/<caminho do openbus-cpp-mico>/lib/mico-st: \
${LD_LIBRARY_PATH}";export PATH="/<caminho do openbus-cpp-mico>/bin/mico-st:${PATH}"'
alias mico-st-d='export LD_LIBRARY_PATH="/<caminho do openbus-cpp-mico>/lib/mico-st-d: \
${LD_LIBRARY_PATH}";export PATH="/<caminho do openbus-cpp-mico>/bin/mico-st-d:${PATH}"'
$ mico-mt-d
$ cd /<caminho do openbus-cpp-mico>/demo/hello
$ b2 --layout=tagged threading=multi
--password não seja passado, a senha de acesso será pedido pelo administrador do barramento (busadmin).
$ cd /<caminho do openbus-cpp-mico>/demo/hello/admin $ busadmin --login=admin --password=admin --script=busadmin.adm [INFO] Categoria 'DemoCppHelloCategory' cadastrada com sucesso [INFO] Entidade 'demo' cadastrada com sucesso [INFO] Certificado da entidade 'demo' cadastrada com sucesso [INFO] Interface 'IDL:tecgraf/openbus/interop/simple/Hello:1.0' cadastrada com sucesso. [INFO] Autoriza??o concedida a 'demo': IDL:tecgraf/openbus/interop/simple/Hello:1.0
$ busadmin --login=admin --password=admin --list-entity
-----+-------------+----------------------+-------------------------------------
| ID ENTIDADE | ID CATEGORIA | NOME
-----+-------------+----------------------+-------------------------------------
001 | demo | DemoCppHelloCategory | Entidade gerada pelo script
-----+-------------+----------------------+-------------------------------------
$ busadmin --login=admin --password=admin --list-category
-----+----------------------+---------------------------------------------------
| ID CATEGORIA | NOME
-----+----------------------+---------------------------------------------------
001 | DemoCppHelloCategory | Categoria gerada pelo script
-----+----------------------+---------------------------------------------------
$ busadmin --login=admin --password=admin --list-interface
-----+--------------------------------------------------------------------------
| INTERFACE
-----+--------------------------------------------------------------------------
001 | IDL:tecgraf/openbus/interop/simple/Hello:1.0
-----+--------------------------------------------------------------------------
$ busadmin --login=admin --password=admin --list-authorization
-----+-------------+------------------------------------------------------------
| ID ENTIDADE | INTERFACES
-----+-------------+------------------------------------------------------------
001 | demo | IDL:tecgraf/openbus/interop/simple/Hello:1.0
-----+-------------+------------------------------------------------------------
$ cd /<caminho do openbus-cpp-mico>/demo
$ ./bin/hello/gcc-4.6/debug/threading-multi/hello_server --private-key \
hello/admin/DemoCppHello.key
$ mico-mt-d
$ cd /<caminho do openbus-cpp-mico>/demo $ ./bin/hello/gcc-4.6/debug/threading-multi/hello_client
$ busadmin --login=admin --password=admin --list-offer
-----+-------------+----------------------------------------------+------------+----------
| ID ENTIDADE | INTERFACES | DATA | HORA
-----+-------------+----------------------------------------------+------------+----------
001 | demo | IDL:scs/core/IComponent:1.0 | 06/06/2013 | 17:48:07
| | IDL:scs/core/IMetaInterface:1.0 | |
| | IDL:scs/core/IReceptacles:1.0 | |
| | IDL:tecgraf/openbus/interop/simple/Hello:1.0 | |
-----+-------------+----------------------------------------------+------------+----------
$ busadmin --login=admin --password=admin --list-offer
-----+-------------+----------------------------------------------+------------+----------
| ID ENTIDADE | INTERFACES | DATA | HORA
-----+-------------+----------------------------------------------+------------+----------
001 | demo | IDL:scs/core/IComponent:1.0 | 06/06/2013 | 17:48:07
| | IDL:scs/core/IMetaInterface:1.0 | |
| | IDL:scs/core/IReceptacles:1.0 | |
| | IDL:tecgraf/openbus/interop/simple/Hello:1.0 | |
002 | demo | IDL:scs/core/IComponent:1.0 | 06/06/2013 | 17:53:52
| | IDL:scs/core/IMetaInterface:1.0 | |
| | IDL:scs/core/IReceptacles:1.0 | |
| | IDL:tecgraf/openbus/interop/simple/Hello:1.0 | |
-----+-------------+----------------------------------------------+------------+----------
$ ./bin/hello/gcc-4.6/debug/threading-multi/hello_client
Existe mais de um servico Hello no barramento. Tentaremos encontrar uma funcional.
Erro de comunicacao. Verifique se o sistema se encontra ainda disponivel ou se sua
conexao com o mesmo foi interrompida
$ busadmin --login=admin --password=admin --del-offer --entity=demo
-----+-------------+----------------------------------------------+------------+----------
| ID ENTIDADE | INTERFACES | DATA | HORA
-----+-------------+----------------------------------------------+------------+----------
001 | demo | IDL:scs/core/IComponent:1.0 | 06/06/2013 | 17:48:07
| | IDL:scs/core/IMetaInterface:1.0 | |
| | IDL:scs/core/IReceptacles:1.0 | |
| | IDL:tecgraf/openbus/interop/simple/Hello:1.0 | |
002 | demo | IDL:scs/core/IComponent:1.0 | 06/06/2013 | 17:53:52
| | IDL:scs/core/IMetaInterface:1.0 | |
| | IDL:scs/core/IReceptacles:1.0 | |
| | IDL:tecgraf/openbus/interop/simple/Hello:1.0 | |
-----+-------------+----------------------------------------------+------------+----------
Informe o Indice da oferta que deseja remover:
002
[INFO] Oferta '2' removida com sucesso.
$ busadmin --login=admin --password=admin --del-offer --entity=demo
-----+-------------+----------------------------------------------+------------+----------
| ID ENTIDADE | INTERFACES | DATA | HORA
-----+-------------+----------------------------------------------+------------+----------
001 | demo | IDL:scs/core/IComponent:1.0 | 06/06/2013 | 17:48:07
| | IDL:scs/core/IMetaInterface:1.0 | |
| | IDL:scs/core/IReceptacles:1.0 | |
| | IDL:tecgraf/openbus/interop/simple/Hello:1.0 | |
-----+-------------+----------------------------------------------+------------+----------
Informe o Indice da oferta que deseja remover:
001
[INFO] Oferta '1' removida com sucesso.
$ cd /<caminho do openbus-cpp-mico>/demo
$ ./bin/hello/gcc-4.6/debug/threading-multi/hello_server --private-key \
hello/admin/DemoCppHello.key