A user interacts with Polyglot. Polyglot works internally with software servers. By default Polyglot runs on port 8184, Softwareserver on port 8182. A user can use "http://<polyglot_ip>:8184/" to see the available endpoints / URLs, such as "http://<polyglot_ip>:8184/servers" to see the server IP list, or "http://<polyglot_ip>:8184/form" to use a form to submit a conversion request.
java -cp polyglot.jar:lib/* -Xmx1g edu.illinois.ncsa.isda.softwareserver.polyglot.PolyglotRestlet
A Polyglot process goes to RabbitMQ, gets the consumer IPs, connects to these IP's softwareserver at the URL "<softewareserver_ip>:8182/applications". If the URL is accessible and contains valid content, Polyglot adds the IP to its server list.
A Softwareserver connects to RabbitMQ, picks up jobs (aka msgs) in the queues, processes them, and sends the results back by accessing Polyglot's endpoint at "<polyglot_ip>:8184/checkin/<jobid>/<result_url>".
SoftwareServer uses SoftwareServer.conf + scripts/*/.aliases.txt to configure which applications it will process. For example, SS on dap-dev is configured to convert only demclip and streamclip:
SoftwareServer.conf: #BatchScripts=scripts/bat #ShellScripts=/home/polyglot/scripts/sh #RScripts=scripts/R #AHKScripts=scripts/csr-configured #AppleScripts=scripts/applescript #SikuliScripts=scripts/sikuli PythonScripts=scripts/py $ grep -v ^# */.aliases.txt ahk/.aliases.txt:A3DReviewer ahk/.aliases.txt:ImgMgk ahk/.aliases.txt:IrfanView py/.aliases.txt:demclip_convert.py py/.aliases.txt:streamclip_convert.py R/.aliases.txt:PEcAn sh/.aliases.txt:avconv-audio sh/.aliases.txt:avconv-video |
GET:
/ Returns a list of supported endpoints.
/alive Returns "yes".
/checkin
/convert Returns all supported output formats
/convert/output_format1 returns all supported input formats that can be converted to output_format1
/convert/output_format1/file_url1 do the conversion: download file_url1
/form
/image
/inputs
/inputs/<format1>
/outputs
/requests
/servers
/software
GET:
/file/<file1> # If file1 doesn't exist and file1.url exists.
/servers/<server1_ip>[/...] # Redirects to server1_ip:8182/software/...
/software/<sw1> # Accesses all SS:8182/software until finding one that contains sw1 and redirects to <ss_ip1>:8182/software/<sw1>.
POST:
/servers/<ip1>[/...] # Redirects to ip1:8182/software/<...>.
/software/<sw1> # Accesses all SS:8182/software until finding one that contains sw1 and redirects to <ss_ip1>:8182/software/<sw1>.
Polyglot and SS are implemented in Java, currently using Restlet. Current configuration files are:
Softwareserver job checkin is in SoftwareServerRESTUtilities.java, Polyglot accessing RabbitMQ part is in polyglot/PolyglotStewardAMQ.java.
https://isda.ncsa.illinois.edu/svn/isda/trunk/kgm/Utilities/src/kgm/utility/Utility.java
Send the conversion request:
curl http://browndog.user:password1@dap-dev.ncsa.illinois.edu:8184/convert/jpg/http%3A%2F%2Fbrowndog.ncsa.illinois.edu%2Fexamples%2Fbrowndog.png
Get the converted file:
curl -u browndog.user:password1 -O http://dap-dev.ncsa.illinois.edu:8184/file/200598567_browndog.jpg
In pom.xml: org.restlet 2.3.1.
Need to install the programs used in Softwareserver scripts:
convert, unoconv, daffodil, ffmpeg, 7z and 7za, libreoffice, avconv, xvfb-run, eog, flac, ps2pdf, gthumb, htmldoc, kabeja, rar (requires "multiverse"), unzip, unrar, cabextract, ncdump, pdf2djvu, prince, soundconverter, TeighaFileConverter, txt2html, unrtf, cvlc, ebook-convert
which are in the following Ubuntu packages:
imagemagick, unoconv, (daffodil/), ffmpeg, p7zip-full, libreoffice*, libav-tools, xvfb, eog, flac, gthumb, htmldoc, (kabeja?), rar, unrar, cabextract, netcdf-bin, pdf2djvu, (prince?), soundconverter, (TeighaFileConverter?), txt2html, unrtf, vlc-nox, calibre
unzip was already installed. ps2pdf is in ghostscript, already installed.
To install those that are available on Ubuntu 14.04, Daffodil and Kabeja, do:
sudo vi /etc/apt/sources.list # to uncomment the 4 multiverse lines. sudo apt-get update sudo apt-get install -y imagemagick unoconv p7zip-full libav-tools xvfb eog flac gthumb htmldoc rar unrar cabextract netcdf-bin pdf2djvu soundconverter txt2html unrtf vlc-nox calibre cd /home/polyglot sudo scp -pr dap-dev.ncsa.illinois.edu:/home/polyglot/daffodil . sudo chown -R --reference=/home/polyglot /home/polyglot/daffodil cd /opt sudo scp -pr dap-dev.ncsa.illinois.edu:/opt/kabeja-0.4 . sudo chmod 755 kabeja-0.4/kabeja.sh # Polyglot's Kabeja_convert.sh uses "./kabeja.sh", so needs to be executable. sudo chown -R --reference=/home/polyglot /opt/kabeja-0.4 # Kabeja_convert.sh copies the input file in it, so needs the write permission. |