Мне нужно логически и неинтерактивно удалить приложение из Oracle 10. Решение, которое я придумал, состоит в том, чтобы использовать WLST и написать программу на python, чтобы выполнить эту работу за меня. Проблема в том, что я манипулирую sys.path
вне скрипта.
Я вызываю свой сценарий с помощью пользовательской WLSTTask
Ant-задачи Weblogic и передаю определенные аргументы в сценарий через атрибут arguments
. Это выглядит так:
<target name="undeploy-oldest">
<wlsttask
debug="true"
fileName="${basedir}/resources/script/py/undeployOldestApp.py"
arguments="dmi ${user} ${password} ${url} ${basedir}/resources/script/py/" />
</target>
И сам скрипт.
import sys
from apputil.applist import getAppList
from apputil.apputility import getOldestAppVersion
from wlstModule import connect, disconnect, undeploy
appName = sys.argv[1]
username = sys.argv[2]
password = sys.argv[3]
url = sys.argv[4]
connect(username, password, url)
serverAppList = getAppList()
versionToUndeploy = getOldestAppVersion(appName, serverAppList)
if (versionToUndeploy != -1):
undeploy(versionToUndeploy)
print "Undeployed " + versionToUndeploy
else:
print "Nothing to undeploy"
disconnect()
Проблема, с которой я столкнулся, связана с последним аргументом в списке аргументов задачи Ant. У меня сложилось впечатление, что Jython автоматически добавляет текущий рабочий каталог в sys.path
; хотя, пока я вижу запись для "." в sys.path
импорт из моего пользовательского apputil
модуля не работает. Я подозреваю, что это связано с тем, откуда на самом деле работает Ant и что "." не представляет каталог, в котором существует undeployOldestApp.py
. Я попытался добавить путь к пути классов Ant с помощью тега classpath внутри тега WLSTTask
, но он не добавил этот путь в список sys.path
Jython.
Мой единственный успех до сих пор был в последнем аргументе в задаче Ant, где между import sys
и from apputil.applist import getAppList
я называю sys.path.append(sys.argv[5])
. На мои скрипты тогда правильно ссылаются из импорта, и все хорошо. Я бы предпочел, чтобы я исключил эту зависимость и чтобы задача Ant выполняла внедрение нужного элемента пути. Мне не повезло выполнить это.
Я надеюсь, что я все понял, и что у сообщества будут какие-то новые предложения или, по крайней мере, объяснения, почему это не работает. Спасибо.