Вы не вызываете «пропущенное» logging.debug
, поскольку lvmCreateSnapshot
возвращает ноль и, следовательно, ваше условие if
никогда не выполняется.Попробуйте
if lvm_create_snapshot:
logging.debug('Error creating lvm snapshot of %s/%s, exited with status %s', lvm_vg, lvm_name, lvm_create_snapshot)
else:
logging.debug('created lvm snapshot of %s/%s, lvm_vg, lvm_name)
, чтобы при успешном вызове subprocess
находилось else
, а в противном случае - условие if
, или
if not lvm_create_snapshot:
logging.debug('...debugging text...')
только для вывода отладочной информации.сообщение, если subprocess
возвращает ошибку.
РЕДАКТИРОВАТЬ:
Я только что посмотрел документацию для subprocess.check_call()
, см. http://docs.python.org/library/subprocess.html,, в которой говорится, что subprocess.check_call
возвращает нольесли вызов подпроцесса был успешным и в противном случае возникает исключение CalledProcessError
.Поэтому вы должны поймать это исключение с помощью обычного блока try / исключением.Должно быть что-то похожее на следующее:
try:
lvmCreateSnapshot(lvm_vg, lvm_name, lvm_snapshot_size)
logging.debug('created lvm snapshot of %s/%s', lvm_vg, lvm_name)
except CalledProcessError as e:
logging.debug('Error creating lvm snapshot of {0}/{1}. Return code was {2}'.format(lvm_vg,
lvm_name, e.returncode))
raise
Последний рейз предназначен для печати трассировки.Конечно, вы можете использовать что-то вроде return 1
.