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