Вызов скрипта гремлина из программы на Python, использующей Bulbs

Я использую TitanGraphDB + Cassandra. Я запускаю Titan следующим образом

cd titan-cassandra-0.3.1
bin/titan.sh config/titan-server-rexster.xml config/titan-server-cassandra.properties

У меня есть оболочка Rexster, которую я могу использовать для связи с Titan+Cassandra выше.

cd rexster-console-2.3.0
bin/rexster-console.sh

Я пытаюсь смоделировать топологию сети с помощью Titan Graph DB. Я хочу запрограммировать Titan Graph DB из моей программы на python. Я использую для этого пакет лампочек. Я создаю три типа вершин

 - switch
 - port 
 - device

Я создаю помеченные края между портами, которые связаны физически. Я использую метку "ссылка".

Допустим, у меня есть две вершины порта portA а также portB,

Я хочу проверить, если portA связан с portB от моего python program используя пакет лампочек.

В качестве первого шага. Я пишу скрипт (сохраняется в файл is_connected.sh)

def is_connected(portA, portB):
    return portA.both("link").retain([portB]).hasNext()

Если я попытаюсь выполнить приведенный выше скрипт из моей консоли rexster следующим образом, я получу следующий результат.

sudo ./start_rexter.sh 
        (l_(l
(_______( 0 0
(        (-Y-) <woof>
l l-----l l
l l,,   l l,,
opening session [127.0.0.1:8184]
?h for help

rexster[groovy]> ?e
specify the file to executerexster[groovy]> is_connected.sh
==>An error occurred while processing the script for language [groovy]. All transactions across all graphs in the session have been concluded with failure: java.util.concurrent.ExecutionException: javax.script.ScriptException: javax.script.ScriptException: groovy.lang.MissingPropertyException: No such property: is_connected for class: Script2

Это моя самая первая попытка написания хранимой процедуры (она же скрипт gremlin). Я не знаю, правильный ли это подход к ней. Также моей конечной целью будет возможность вызвать этот скрипт из моей программы на python, которая использует лампочки. Если бы кто-то мог указать мне правильное направление, это было бы здорово!

1 ответ

Решение

?e Команда требует, чтобы вы указали файл для выполнения в той же строке. я создал sum.groovy:

def sum(x,y) { x+y }

затем из консоли:

rexster[groovy]> ?e sum.groovy
==>null
rexster[groovy]> sum(1,2)
==>3

Странно что указание ?e без файла не работает правильный перевод строки. Я постараюсь исправить это.

Другие вопросы по тегам