2014-01-12 5 views
1

Я пишу небольшую программу с SaltStack API в Python, и я получаю сообщение об ошибкес помощью питона и saltstack ошибки

import salt.client 
SnakeInSalt = salt.client.LocalClient() 
SnakeInSalt.cmd('*',test.ping) 

Ошибка:

python test.py 
Traceback (most recent call last): 
File "test.py", line 4, in <module> 
SnakeInSalt.cmd('*',test.ping) 
NameError: name 'test' is not defined 

Если я бегу salt из команды line, он работает

> sudo salt '*' test.ping 

> [sudo] password for z: 

> z-ThinkPad: 
> True 

ответ

1

Могу ли я считать, что это уже не вопрос, на который вы нуждаетесь? (Я собираюсь ответить на него в любом случае)

При запуске sudo salt '*' test.ping вы выполняете встроенную функцию с именем ping в модульном тесте. Чтобы просмотреть список доступных модулей, используйте sudo salt '*' sys.list_modules test. Вы можете просмотреть список функций в этом модуле, набрав salt '*' sys.list_funtions test. Команда sudo salt '*' test.ping должна работать для каждой конфигурации солей в мире и не является проверкой какого-либо настраиваемого состояния или модуля, который вы написали.

Ваш ломается, потому что вы используете неправильный синтаксис, и вы вызываете модуль cmd вместо тестового модуля. Ваш код должен выглядеть следующим образом:

import salt.client 
SnakeInSalt = salt.client.LocalClient() 
SnakeInSalt.cmd('*', 'test.ping') 

Единственное отличие состоит в том, что test.ping потребность быть заключена в кавычках (двойных или одинарных). Вы можете ссылаться на https://docs.saltstack.com/en/latest/ref/clients/#salt.client.LocalClient.cmd, чтобы просмотреть все аргументы, доступные для .cmd(). То, чего вам не хватало, было знание о том, что cmd требует второй аргумент fun (short for function) должен быть строкой. Это не будет конвертировано для вас, поэтому вам нужно окружить его кавычками.

Вы также можете обратиться к https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.test.html#salt.modules.test.ping, чтобы узнать, какие аргументы требуются функцией ping тестового модуля. Предупреждение о спойле ... ответ - нет, но похоже, что вы уже это знали.

CHEERS!

+0

Ответьте им в любом случае. 99% глаз - у не-акитатора (ОП) – Drew