Вызов скрипта гремлина из программы на 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
без файла не работает правильный перевод строки. Я постараюсь исправить это.